4

私は Yii フレームワークの初心者で、関連するテーブルからドロップダウン リストを作成しようとしています。テーブル「News」[...多くのフィールド、カテゴリ] と「NewsCategories」[id、category_name] があります。ニュースで新しいレコードを作成するためのフォームで、ユーザーが category_name を選択できるときにカテゴリ フィールドにドロップダウン リストを作成したいのですが、カテゴリの id は新しいレコードのレコーダーでなければなりません。

助けてください。私の英語でごめんなさい。私が説明したことが理解できることを願っています。

これが私が関係を作成した方法です

モデル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')));?>
4

1 に答える 1

5

リレーションを指定するとき、主キー ( id )を指定する必要はありません。なぜなら、yii はモデルから主キーを差し引くことができるからです。もう一方の端のみを指定する必要があるため、 NewsCategory 関係は次のようになります。

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

ドロップダウン リストに適したデータを取得するには、次を使用します。

CHtml::listData(NewsCategories::model()->findAll(), 'id', 'category_name');
于 2013-09-02T19:59:24.490 に答える