Yii模型关系'on'选项在yii模型关系中连接表

时间:2013-09-18 20:45:09

标签: php mysql yii

我在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);

但没有任何事情发生,我的代码出了什么问题?

1 个答案:

答案 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,然后它只会建立一个连接,而不是寻找倍数。