Создание выпадающего списка с отношениями в 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')));?>
Author: Dmitry Borovkov, 2013-09-02

1 answers

При указании отношений вам не нужно указывать первичный ключ (идентификатор ), потому что yii может вычесть первичный ключ из модели. Вам нужно только указать другой конец, поэтому ваше отношение к категории новостей должно выглядеть следующим образом:

'news'=>array(self::HAS_MANY, 'News', 'category'),

Чтобы получить данные, подходящие для раскрывающегося списка, используйте

CHtml::listData(NewsCategories::model()->findAll(), 'id', 'category_name');
 4
Author: Martin Komara, 2013-09-02 19:59:24