public function relations(){
return array(
'post'=>array(self::BELONGS_TO, "postModel", "post_id"),
);
}
Когда выполняю
$emps=EmpModel::model()->with('post')->findAll();
то я могу обратиться к имени сотрудника как $emps->name, а вот к его должности получается обращаться только как $emps->post[‘postname’]
А как можно сделать так, чтобы должность подставлялась к основным данным, чтобы можно было обратиться к ней как $emps->postname, или чтобы в post_id вместо id должности выводилсась название должности?
Мне это нужно для вывода в таблице списка сотрудников вместе с должностями (использую ext2js)
Если хочется еще проще, то можете добавить в модель EmpModel метод getPostName(), суть которого будет заключаться в возвращении этого самого значения. В таком случае можно будет писать просто $emps->postname.
в Ext4yii есть методы, которые автоматически строят таблицы на основании модели. Данные о полях они берут из ActiveRecordMetaData этой модели. Там описаны поля, их типы, размеры, и т.д основной таблицы модели. Но вот дополнительных полей типа postname там нет, поэтому Extjs такие поля не рассматривает и не отображает.
Создать метод getPostName() - хорошая идея, про этот способ я и забыл
Но вот в случае с Ext4yii он не поможет - в метадату колонка не попадает, а надо, чтобы была модель, в которой postname было бы как обычное поле таблицы.
Вообще, это ведь часто встречающаяся задача - подставлять значения - полюбому же должны быть простые способы для этого.
Возможно проблема в ext4yii? Мы юзаем ExtJS, но на ext4yii забили. Стандартные вещи делает неплохо, а вот такие приколы - с трудом. Плюс не нашли как добавить нестандартное поведение компонентов. Поэтому пока что пишем просто ExtJS + Yii