Создание выпадающего списка с отношениями в yii
Здравствуйте, я новичок в yii-фреймворке, и теперь я пытаюсь создать выпадающий список из связанной таблицы. У меня есть таблица "Новости"[...много полей, категория] и "Категории новостей"[идентификатор, имя_категории]. В форме для создания новой записи в новостях я хочу создать раскрывающийся список в поле категория, когда пользователь может выбрать имя категории, но идентификатор категории должен быть записан в новой записи.
Пожалуйста, помогите мне с этим. Извините за мой английский. Надеюсь, то, что я объясняю, понятно.
Вот как я созданные отношения
Модель News.php
public function relations()
{
// NOTE: you may need to adjust the relation name and the related
// class name for the relations automatically generated below.
return array(
'category'=>array(self::BELONGS_TO, 'NewsCategories', 'category'),
);
}
Модель NewsCategories.php
public function relations()
{
// NOTE: you may need to adjust the relation name and the related
// class name for the relations automatically generated below.
return array(
'news'=>array(self::HAS_MANY, 'News', 'id'),
);
}
И как я пытаюсь создать выпадающий список:
<?php echo $form->dropDownList($model,'category',CHtml::listdata(News::model()->with('category')->findAll(),'id','category_name'),array('empty'=>'(Select a category')));?>
1 answers
При указании отношений вам не нужно указывать первичный ключ (идентификатор ), потому что yii может вычесть первичный ключ из модели. Вам нужно только указать другой конец, поэтому ваше отношение к категории новостей должно выглядеть следующим образом:
'news'=>array(self::HAS_MANY, 'News', 'category'),
Чтобы получить данные, подходящие для раскрывающегося списка, используйте
CHtml::listData(NewsCategories::model()->findAll(), 'id', 'category_name');