Customer.php 1.64 KB
Newer Older
1 2 3
<?php
namespace yiiunit\data\ar\elasticsearch;

4
use yii\elasticsearch\Command;
5
use yiiunit\extensions\elasticsearch\ActiveRecordTest;
6

7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
/**
 * Class Customer
 *
 * @property integer $id
 * @property string $name
 * @property string $email
 * @property string $address
 * @property integer $status
 */
class Customer extends ActiveRecord
{
	const STATUS_ACTIVE = 1;
	const STATUS_INACTIVE = 2;

	public $status2;

23 24
	public static function primaryKey()
	{
25
		return ['id'];
26 27
	}

28
	public function attributes()
29
	{
30
		return ['id', 'name', 'email', 'address', 'status'];
31 32 33 34
	}

	public function getOrders()
	{
35
		return $this->hasMany(Order::className(), array('customer_id' => 'id'))->orderBy('create_time');
36 37 38 39
	}

	public static function active($query)
	{
40
		$query->andWhere(array('status' => 1));
41
	}
42 43 44 45 46 47 48

	public function afterSave($insert)
	{
		ActiveRecordTest::$afterSaveInsert = $insert;
		ActiveRecordTest::$afterSaveNewRecord = $this->isNewRecord;
		parent::afterSave($insert);
	}
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69

	/**
	 * sets up the index for this record
	 * @param Command $command
	 */
	public static function setUpMapping($command, $statusIsBoolean = false)
	{
		$command->deleteMapping(static::index(), static::type());
		$command->setMapping(static::index(), static::type(), [
			static::type() => [
				"_id" => ["path" => "id", "index" => "not_analyzed", "store" => "yes"],
				"properties" => [
					"name" =>        ["type" => "string", "index" => "not_analyzed"],
					"email" =>       ["type" => "string", "index" => "not_analyzed"],
					"address" =>     ["type" => "string", "index" => "analyzed"],
					"status" => $statusIsBoolean ? ["type" => "boolean"] : ["type" => "integer"],
				]
			]
		]);

	}
70
}