Бывают случаи, когда после поиска, в результирующем наборе данных должно быть поле, которого нету в таблице. Например, у нас есть в таблице поле адрес, которое в себе содержит название города.
Пусть поле адрес до первой запятой содержит название города. Как лучше всего решить задачу?
Ответ прост, добавить новую property в модель и переопределить для нее getter. К счастью, с Yii это сделать достаточно просто.
Откроем файл с классом модели и добавим такой код:
/**
* @property string $city
*/
protected $city;
/**
* get City property
*/
public function getCity(){
$address = $this->getAttribute('address');
$list = explode(",",$address);
if(count($list)==0)
return "";
return trim($list[0]);
}
Теперь можно достать такое поле так:
$criteria = ...
$result = ModelName::model()->->findAll($criteria);
foreach ($result as $item){
$city = $item->getCity();
$name = $item->getAttribute('name');
}
Вытащить город в этом случае можно можно ещё так... $city = $item->сity
ОтветитьУдалитьда, так как атрибут теперь модель будет считать как своим родным )
ОтветитьУдалить