YII下拉菜单,2个型号

时间:2012-08-16 14:41:08

标签: php yii

我是PHP和yii框架的新手,所以我需要一些关于下拉菜单的帮助。在我的数据库中,我有2个表 - 类别 - ID,名称和新闻 - id,title,content,category_id。我怎样才能建立这两个控制器之间的关系?当我发布新闻时,我必须从下拉菜单中选择类别。对于这个愚蠢的问题我很抱歉,但此刻我无法做到。

3 个答案:

答案 0 :(得分:1)

只需将其放入新闻模型中:

    /**
     * @return array relational rules.
     */
    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, 'Category', 'category_id'),
        );
    }

这在你的分类模型中:

    /**
 * @return array relational rules.
 */
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(
        'newsItems' => array(self::HAS_MANY, 'News', 'category_id'),
    );
}

只要您拥有类别的实例,就可以参考您的多个新闻项目:

$category = Category::model()->findByPk(1);

$category->newsItems; //an array of News objects

您可以参考类似的类别:

$news = News::model()->findByPk(1);

$category = $news->category; //a Category object

答案 1 :(得分:0)

我想您在创建新闻项目时询问如何显示所有类别以供选择。在用于创建新闻对象的表单中,您需要以下内容:

$cats = Category::model()->findAll();
$cats = CHtml::listData($cats, 'id', 'name');
$form->dropDownList($model, 'category', $cats);

关于他们之间的关系以及之后的访问,请参阅Benjamin Bytheway的回答

答案 2 :(得分:0)

你可以像这样在一行中写下paystey所写的内容:

<?php echo $form->dropDownList($model,'Category', CHtml::listData($CategoryModel::model()->findAll(array('order'=>'Text ASC')), 'CategoryID', 'Text'), array('empty'=> ' -- Select A Category -- '));?>

列表数据的最后一个参数就是页面加载时应显示的内容。