結合は、リレーションを作成することでYiiで最もよく使用されます。これにより、複雑なクエリを作成する必要がなくなります
。SQLテーブルに外部キーを追加することから始めます(たとえば、椅子に外部キーpatientIdを追加します)
次に、モデルを再生成すると、リレーションが自動追加されたことがわかります(または手動でリレーションを追加できます)
public function relations()
{
return array(
'chairs' => array(self::HAS_MANY, 'chair', 'patientId'),
);
}
そして、椅子のモデルでは、関係がわかります
'patient' => array(self::BELONGS_TO, 'patient', 'patientId'),
リレーションを単独で定義すると、クエリされたモデルの値に$ model-> ratioNameとしてアクセスできます。「where」条件で列を使用する場合は、モデル関数で次のクエリを使用します。
$patients=Patient::model()->findAll(array(
'condition' => "$field like '%$value%'",
'with'=>array('chairs'),
'select'=> "*",
));
「with」キーワードは重要であり、クエリに含める関係のリストの配列を取ることができます。クエリ条件は、含まれているすべてのテーブルに適用されます。別のテーブルのフィールドをクエリせず、出力データのみをリンクする必要がある場合は、ここで「with」キーワードをスキップできます。
そして、
によって患者に割り当てられた椅子に到達することができますforeach($patients as $patient)print_r($patient->chairs);
他のアプローチもあります。たとえば、ここ
関係についてさらに詳しく知りたい場合は、こちら にアクセスしてください。