Joins bruges bedst i Yii ved at oprette relationer, på den måde behøver du ikke skrive komplekse forespørgsler
Start med at tilføje fremmednøgler i dine sql-tabeller (f.eks. tilføje et fremmednøgle-patient-id i stolen)
Hvis du derefter genskaber din model, kan du se relationerne automatisk tilføjet (eller du kan manuelt tilføje relationerne)
public function relations()
{
return array(
'chairs' => array(self::HAS_MANY, 'chair', 'patientId'),
);
}
Og i stolemodellen vil du se sammenhængen
'patient' => array(self::BELONGS_TO, 'patient', 'patientId'),
At definere relationen alene giver dig adgang til værdierne i den forespurgte model som $model->relationName, hvis du vil bruge en kolonne i 'hvor' tilstand, skal du bruge følgende forespørgsel i din modelfunktion(er)
$patients=Patient::model()->findAll(array(
'condition' => "$field like '%$value%'",
'with'=>array('chairs'),
'select'=> "*",
));
Nøgleordet "med" er vigtigt og kan tage en række lister over relationer, der skal inkluderes i forespørgslen. Forespørgselsbetingelsen vil gælde for alle de inkluderede tabeller. Du kan springe nøgleordet "med" over her, hvis du ikke ønsker at forespørge et felt fra en anden tabel og kun skal have linket til outputdataene.
Og du kan nå de stole, der er tildelt patienten, ved at
foreach($patients as $patient)print_r($patient->chairs);
Der er også andre tilgange , som en diskuteret her
For at komme mere i kontakt med relationer, gå her