有两张桌子:
内容
id | text
------------
1 | text1
2 | text2
3 | text3
4 | text4
照片
id | content_id | src
-----------------------------
1 | 1 | img1.png
2 | 1 | img2.png
3 | 2 | img3.png
4 | 3 | img1.png
尝试从第三个控制器获取左连接照片的内容。
我的代码:
$oDBC = new CDbCriteria();
$oDBC->select = 't.*,p.*';
$oDBC->join = 'LEFT JOIN photos p ON t.id = p.content_id';
$oDBC->condition = 't.step_id = "'.$model->id.'"';
$content = Content::model()->find($oDBC);
在ContentController中添加了函数:
public function relations()
{
return array('photos' => array(self::HAS_MANY, 'Photos', 'content_id');
}
但print_r($content)
仅返回内容数据,没有照片数据。
就像this一样,我试过:
print_r($content->photos);
但获得了Property "Content.photos" is not defined.
我做错了什么?
答案 0 :(得分:4)
您已将关系功能添加到错误的位置。它应该添加到Content
模型中,而不是ContentController
:
class Content extends CActiveRecord {
// ... other functions ...
public function relations() {
return array('photos' => array(self::HAS_MANY, 'Photos', 'content_id');
}
}
如果您使用Gii生成了模型,那么关系函数应该已经存在。