2013-09-02 5 views
4

Привет, Я новичок в структуре yii, и теперь я пытаюсь создать dropdownlist из связанной таблицы. У меня есть таблица «Новости» [... много полей, категории] и «NewsCategories» [id, category_name]. В форме для создания новой записи в новостях Я хочу создать dropedownlist в поле категории, когда пользователь может выбрать category_name, но идентификатор категории должен быть записывающим устройством в новой записи.Создание dropdownlist с отношениями в 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'), 
    ); 
} 

И как я пытаюсь создать DropDownList:

<?php echo $form->dropDownList($model,'category',CHtml::listdata(News::model()->with('category')->findAll(),'id','category_name'),array('empty'=>'(Select a category')));?> 

ответ

4

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

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

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

CHtml::listData(NewsCategories::model()->findAll(), 'id', 'category_name'); 
+0

Большое спасибо. Я провожу 2 дня, пытаясь решить эту проблему. Извините, но я не могу голосовать за вас, потому что у вас недостаточно репутации. –

Смежные вопросы