1

私は Cake1.3 を使用しています。2 つのモデルがあります。

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 には 2 つのクエリが表示されます。1 つは患者からの選択フィールドで、もう 1 つはコンサルティングと患者の間の結合クエリです。(実際に必要だったのはこれだけです)。2 つの異なるクエリが返されるので、条件を追加できませんか? なぜfindがそう戻ってくるのですか?

4

1 に答える 1

0

hasMany リレーションの場合、Cake は左結合を行いません。begsTo の場合のみです。したがって、逆の場合 ( $this->ConsultingDet->find('all'))、cake は 1 つのクエリを実行する必要があります。

これら 2 つのテーブルに異なる条件を適用する場合は、2 つのクエリを手動で実行するだけです。

試してみたい場合は、ケーキのクエリで「結合」パラメータをカスタマイズすることで、これを回避する方法があります。

于 2012-05-04T09:55:49.447 に答える