テーブルの 1 つに次のような 2 つの行があります。
id product_id target_product_id description type
1 206587 456 sdfgdfgdfg 0
2 456 206587 fgdgfhghfgfdsgfdghfghfsd 0
行のモデルを表示するときに、とが反転しているid
1
場所に基づいて 2 番目の行を取得したいと考えています。だから私は次の関係を作りました: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;
}
それは完全に機能します。