我在非关键字段上创建关系时遇到问题。我的问题是返回'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.'; ';
}
使用'alias'可以解决模糊列名称问题。但是,我得到了不匹配的结果。
感谢任何帮助。感谢。
答案 0 :(得分:1)
尝试
'visits'=>array(self::HAS_MANY, 'Visit', array('reference_key'=>'reference_key')),
答案 1 :(得分:0)
由于无法让关系发挥作用,我选择只添加一种方法来检索正确的结果
return Visit::model()->findAllByAttributes( array('visitor_key'=>$this->visitor_key) );
这可以解决它。谢谢!