具有多个表的模型中的关系

时间:2014-03-07 19:53:53

标签: yii model relation

我有 三张桌子
帖子
- id
- 标题
postrelations
- post_id
- category_id
类别
- id
- 标题

通过后关系与类别相关联的表格帖子。我需要在帖子中设置关系以获取类别的标题。如何设置这种关系?

1 个答案:

答案 0 :(得分:0)

嗯,这里有几个问题:
1)在定义模型时,您有多对多的关系。 Yii不知道会产生多对多关系,因为它只关注1级关系。所以你们的关系可以得到改善 您应该发布一个看起来像

的单一关系,而不是定义您如何定义它的关系
'categories' => array(self::MANY_MANY, 'categories', 'postrelations(category_id, post_id)', 'order'=>'.... ASC'),

你实际上有一个确切的多对多关系,所以你应该没有问题访问与$ post->类别的关系。几乎与为类别模型定义关系的方式完全相同,只需更改一些字段即可。

2)没有单一类别标题,你的帖子可以属于多个类别(如果它只属于一个那么你的表格就错了)。如果您想获得所有类别的名称,您可以使用

foreach($post->categories as $category) { ... }

或者(这是未经测试的,但它应该可行)以获得用昏迷分隔的类别的名称,你可以做一个

echo implode(",", CHtml::listData($post->categories, 'id', 'title')));