我是PHP和yii框架的新手,所以我需要一些关于下拉菜单的帮助。在我的数据库中,我有2个表 - 类别 - ID,名称和新闻 - id,title,content,category_id。我怎样才能建立这两个控制器之间的关系?当我发布新闻时,我必须从下拉菜单中选择类别。对于这个愚蠢的问题我很抱歉,但此刻我无法做到。
答案 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 -- '));?>
列表数据的最后一个参数就是页面加载时应显示的内容。