Php 使用主动模型变量的Yii关系

Php 使用主动模型变量的Yii关系,php,yii,Php,Yii,我的一个表中有两行,看起来像: id product_id target_product_id description type 1 206587 456 sdfgdfgdfg 0 2 456 206587 fgdgfhghfgfdsgfdghfghfsd 0 查看带有id1的行的模型

我的一个表中有两行,看起来像:

id  product_id  target_product_id   description                    type
1   206587          456                     sdfgdfgdfg                  0
2   456             206587                  fgdgfhghfgfdsgfdghfghfsd    0 
查看带有
id
1
的行的模型时,我希望根据
产品id
目标产品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\u product\u relation
链接到该表,没有得到任何SQL错误,只有一个
null
返回。如果我只使用了与
link\u product\u relation.product\u id=product\u 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',
)),
有关更多信息,请阅读本主题的手册和