我在Yii模型关系上发生了什么事! 我有2个型号:
`Question and Video`,
我正在保存
`question_id` in `Video model as foreign key`,
现在我想在Question model
中建立这样的关系:
'video'=>array(self::HAS_MANY, 'Video', '', 'on'=>'video.question_id=id'),
然后在clistview中我展示:
if (!empty($data->video))
echo CHtml::encode($data->video->video_title);
但没有任何事情发生,我的代码出了什么问题?
答案 0 :(得分:2)
您的关系设置不正确:
'video'=>array(self::HAS_MANY, 'Video', 'question_id'),
//this compares Video->question_id to Question->primary_key
您不需要指定on
,它会使用第三个条件question_id
并将其与您的问题模型的主键进行比较,因为您指定的是HAS_MANY
。如果您的关系为BELONGS_TO
,则第三个条件引用该模型中的属性,并将其与另一个模型中的外键进行比较。因此,如果您在Video
模型上设置了相反的关系,那么它将是:
'question'=>array(self::BELONGS_TO,'Question','question_id'),
//this compares Video->question_id to Question->primary_key
你目前还有
echo CHtml::encode($data->video->video_title);
由于您指定HAS_MANY
$data->video
将是视频实例的数组。所以你有两个选择,只需使用数组data->video[0]->video_title
中的第一个元素或将HAS_MANY
转换为HAS_ONE
,然后它只会建立一个连接,而不是寻找倍数。