Добрый день! Есть вопрос. Я в выпадающем списке хочу вывести Фамилию Имя Отчество водителей (в талбице фамилии записаны в столбце sname, имя - name, отчество - pname).
Либо формируйте массив вручную, делая цикл по массиву AR, или определите в AR метод “getFullName” который бы возвращал “ФИО” и в CHtml вместо ‘sname’ юзайте ‘fullName’
Но вообще во вьюхах делать запросы к базе идеологически не хорошо, лучше экстрактнуть этот код в статический метод модели.
echo $form->dropDownList($model_shift,"[$i]id_driver",CHtml::listData(Personal::model()->findAll(array(‘select’=>‘CONCAT(name, sname, pname) as sname’, ‘condition’=>‘id_type=1’)), ‘id’, ‘sname’),
array(‘empty’=>‘Выберите из списка’));
но в селекторе на форме в выпадающем списке появилось ФИО тока одного чела (последний в таблице), хотя выполнив этот же запрос в хайдискл вывелись ФИО всех.
Потому что делать ваши предложения кажутся мне черезчур сложными, должен быть смособ проше. Создавать массив со значениями я не хочу, а определять в AR метод… я даж не знаю как это сделать
Простейшим выходом было бы создать функцию(геттер) в модели и сформировать массив, так как данные действия в вью нежелательны.
Ну а создание activerecord класса полезно если данных функций у вас не 1-2. Делается это довольно просто. В компонентах создаем класс (например QActiveRecord), обьявляем его как
class QActiveRecord extends CActiveRecord
дописываем нужные функции, и модель обьявляем как
class MyModel extends QActiveRecord
Ничего сложного в этом нет, и это является верным.