我的其中一个表中有两行如下:
id product_id target_product_id description type
1 206587 456 sdfgdfgdfg 0
2 456 206587 fgdgfhghfgfdsgfdghfghfsd 0
当查看具有id
1
的行的模型时,我希望根据product_id
和target_product_id
的反转位置获得第二行。所以我做了一个关系:
'linked_product_relation' => array(self::HAS_ONE, 'Accessory', '',
'on'=>'linked_product_relation.target_product_id = product_id
AND link_product_relation.product_id = target_product_id')
然而,它似乎只返回null
。我已经检查了link_product_relation
链接到表,我没有得到SQL错误,只是一个null
返回。如果我只使用link_product_relation.product_id = product_id
的关系,虽然我确实得到了响应,但只有我目前正在查看的行。我好像漏掉了什么。
我怎样才能得到我想要的输出?
编辑
当我添加一个函数来替换关系时:
function getTwinned(){
$a=Accessory::model()->findByAttributes(array('target_product_id'=>$this->product_id, 'product_id'=>$this->target_product_id));
if($a===null)
return null;
else
return $a;
}
效果很好
您没有指定外键(代码中的''
)。试试这样做:
'linked' => array(self::BELONGS_TO, 'Accessory', array(
'target_product_id'=>'product_id',
'product_id' => 'target_product_id',
)),
更多信息请参阅此处和此处的手册