Думаю, я сам на это отвечу.
Вопрос 1
Отношения проще, если вы сначала настроили внешний ключ в своей базе данных. Для этого вам нужно использовать MySQL (не SQLite) с движком InnoDB (не MyISAM), а для рассматриваемого поля нужен индекс. Затем Gii автоматически установит для вас функцию отношений. В противном случае вам придется делать это вручную в функции Relations () рассматриваемой модели.
Чтобы использовать связанное значение в представлении:
В защищенных / views / [имя модели] /view.php в массиве атрибутов CDetailView измените
'Status'
до
array('label'=>'Status', 'value'=>$model->RelationName->Name)
где RelationName - имя отношения
Чтобы использовать связанное значение в представлении индекса, измените protected / views / [имя модели] / _ view.php (обратите внимание на подчеркивание), например, в этом случае вы должны изменить
$data->Status
до
$data->RelationName->Name
Чтобы использовать связанное значение в представлении администратора, в вызове виджета CGridView в массиве столбцов замените, скажем,
'Status'
с
array('name'=>'Status', 'header'=>'Status', 'value'=>'$data->RelationName->Name')
(обратите внимание на использование переменной $ data, а не скажем $ model или $ dataProvider). Все еще пытаюсь понять, как сортировать и фильтровать ...
Вопрос 2
Чтобы использовать выпадающее меню, в protected / views / [имя модели] / _ form.php:
изменение
<?php echo $form->textField($model,'Status'); ?>
до
<?php echo $form->dropDownList($model,'Status', CHtml::listData(Status::model()->findAll(), 'ID', 'Name')); ?>
Эль вождь, вы джентльмен и ученый.