Yii关系使用活动模型的变量

时间:2013-05-23 15:09:40

标签: php yii

我的一个表中有两行,如下所示:

id  product_id  target_product_id   description                    type
1   206587          456                     sdfgdfgdfg                  0
2   456             206587                  fgdgfhghfgfdsgfdghfghfsd    0 

使用id 1查看行的模型时,我希望根据product_idtarget_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;

}

效果很好。

1 个答案:

答案 0 :(得分:0)

您未在代码中指定外键('')。尝试这样的事情:

'linked' => array(self::BELONGS_TO, 'Accessory', array(
    'target_product_id'=>'product_id',
    'product_id' => 'target_product_id',
)),

有关详情,请参阅有关此主题的手册herehere