0

キー以外のフィールドでリレーションを作成するのに問題があります。私の問題は、関係の「on」セクションで指定された一致する値だけではなく、「HAS_MANY」テーブルのすべてのレコードが返されることです。

Table: customer
- id (PK)
- name
- reference_key

Table: visit
- id
- system_id
- reference_key

Model: Customer relations...
    'visits'=>array(self::HAS_MANY, 'Visit', '', 'on'=>'reference_key=visits.reference_key'),

Model: Visit relations...
    'customer'=>array(self::BELONGS_TO, 'Customer', 'reference_key'),

$dataSet = $data->visits(); // this all records from visit table instead of visits matching on the reference key. 
foreach($dataSet as $visit){
    echo 'visit key: '.$visit->reference_key.'; ';
}

「エイリアス」を使用すると、あいまいな列名の問題が解決されます。ただし、一致しない結果が得られます。

どんな助けでも大歓迎です。ありがとう。

4

2 に答える 2

1

試す

'visits'=>array(self::HAS_MANY, 'Visit', array('reference_key'=>'reference_key')),
于 2013-12-01T00:49:15.840 に答える
0

リレーションを機能させることができなかったので、正しい結果を取得するためのメソッドを追加することにしました

return Visit::model()->findAllByAttributes( array('visitor_key'=>$this->visitor_key) );

これはそれを処理します。ありがとうございました!

于 2013-12-01T01:49:16.277 に答える