find('all')返回两个不同的查询

时间:2012-05-04 08:28:33

标签: cakephp

我正在使用cake1.3,我有两个模型: -

class Patient extends AppModel {
var $hasMany = array(
    'ConsultingDet' => array(
        'className' => 'ConsultingDet',
        'foreignKey' => 'patient_id',           
    )
);
}

class ConsultingDet extends AppModel {
var $belongsTo = array(
    'Patient' => array(
        'className' => 'Patient',
        'foreignKey' => 'patient_id',
    )   ''
    );
}

当我使用

$patients = $this->Patient->find('all')

sqldump显示两个查询,一个是来自患者的选择字段,第二个是咨询和患者之间的连接查询。 (这只是我真正需要的。) 因为它导致两个不同的查询我不能添加条件? 为什么发现这样才回来?

1 个答案:

答案 0 :(得分:0)

在hasMany关系的情况下,Cake不会执行左连接,仅在belongsTo的情况下。因此,如果你反过来($this->ConsultingDet->find('all')),那么蛋糕应该运行一个查询。

如果要为这两个表应用不同的条件,则只需手动运行两个查询。

如果你想尝试一下,可以通过在cake的查询中自定义'join'参数来解决这个问题。