Главная » 2010 » Октябрь » 6 » Yii. Добавить новый getter в модель
09:28
Yii. Добавить новый getter в модель
Бывают случаи, когда после поиска, в результирующем наборе данных должно быть поле, которого нету в таблице. Например, у нас есть в таблице поле адрес, которое в себе содержит название города.

Пусть поле адрес до первой запятой содержит название города. Как лучше всего решить задачу?

Ответ прост, добавить новую 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');
}


Я специально достал из набора два разных поля, чтобы показать как обращатся к стандартной проперти, а как к той что мы создали сами.
Просмотров: 770 | Добавил: Sergey Saenko | Рейтинг: 0.0/0
Всего комментариев: 3
3 Sergboano  
0
<a href=http://zmkshop.ru/stati/proizvodstvo-svarnykh-konstruktsiy/>как собираються металлоконструкций</a>

2 Sergey Saenko  
0
да, так как атрибут теперь модель будет считать как своим родным )

1 Anonymous  
0
Вытащить город в этом случае можно можно ещё так... $city = $item->сity

Имя *:
Email *:
Код *: