Есть ли простой способ добавления настраиваемых полей в модель? Скажем, у меня есть таблица «пользователь» с тремя полями: id, name и surname. Я хочу это:Yii: добавление пользовательских полей
$user = User::model()->findByPk(1);
$echo $user->fullName; // echoes name and surname
Пожалуйста, обратите внимание: Я хочу, чтобы этот обычай поле будет добавлено через SQL, как чего-л
$c = new CDbCriteria();
$c->select = 'CONCAT("user".name, "user".surname) as fullName';
$user = User::model()->find($c);
Проблема заключается в том, что FULLNAME свойство не установлено.
UPD:
вот код немного сложнее проблема - настраиваемое поле из другой таблицы. Вот как это делается:
$model = Application::model();
$model->getMetaData()->columns = array_merge($model->getMetaData()->columns, array('fullName' => 'CONCAT("u".name, "u".surname)'));
$c = new CDbCriteria();
$c->select = 'CONCAT("u".name, "u".surname) as fullName';
$c->join = ' left join "user" "u" on "t".responsible_manager_id = "u".id';
$model->getDbCriteria()->mergeWith($c);
foreach ($model->findAll() as $o) {
echo '<pre>';
print_r($o->fullName);
echo '</pre>';
}
Довольно Hacky решение, хотя ... Я не думаю, что изменения вручную мета данных является хорошим стилем. – zapadlo