非主键和非外键字段的Yii关系

非主键和非外键字段的Yii关系,yii,yii-relations,Yii,Yii Relations,我在创建非关键字段的关系时遇到困难。我的问题是,将返回“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'=

我在创建非关键字段的关系时遇到困难。我的问题是,将返回“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.'; ';
}
使用“别名”可以解决不明确的列名问题。然而,我得到了不匹配的结果

感谢您的帮助。谢谢。

试试看

'visits'=>array(self::HAS_MANY, 'Visit', array('reference_key'=>'reference_key')),

由于无法使关系正常工作,我选择简单地添加一个方法来检索正确的结果

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

这就够了。谢谢大家!

谢谢你的建议,但也没用。我决定不使用relations函数,而只访问ActiveRecord对象:return Visit::model()->findAllByAttributes(数组('visitor\u key'=>$this->visitor\u key));