0

我无法在非关键字段上创建关系。我的问题是“HAS_MANY”表中的所有记录都被返回,而不仅仅是关系的“on”部分中指定的匹配值。

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 回答