Joins kunnen het beste in Yii worden gebruikt door Relaties te maken, op die manier hoef je geen complexe zoekopdrachten te schrijven
Begin met het toevoegen van externe sleutels in uw sql-tabellen (voeg bijvoorbeeld een buitenlandse sleutel toe patiënt-ID in stoel)
Als u vervolgens uw model opnieuw genereert, kunt u zien dat de relaties automatisch zijn toegevoegd (of u kunt de relaties handmatig toevoegen)
public function relations()
{
return array(
'chairs' => array(self::HAS_MANY, 'chair', 'patientId'),
);
}
En in het stoelmodel zie je de relatie
'patient' => array(self::BELONGS_TO, 'patient', 'patientId'),
Als u alleen de relatie definieert, krijgt u toegang tot de waarden in het opgevraagde model als $model->relationName. Als u een kolom in 'where'-voorwaarde wilt gebruiken, gebruikt u de volgende query in uw modelfunctie(s)
$patients=Patient::model()->findAll(array(
'condition' => "$field like '%$value%'",
'with'=>array('chairs'),
'select'=> "*",
));
Het sleutelwoord "met" is belangrijk en kan een reeks lijst met relaties bevatten om in de zoekopdracht op te nemen. De queryvoorwaarde is van toepassing op alle opgenomen tabellen. U kunt het trefwoord "met" hier overslaan als u geen veld uit een andere tabel wilt opvragen en alleen de gekoppelde uitvoergegevens nodig hebt.
En u kunt de stoelen die aan de patiënt zijn toegewezen bereiken via
foreach($patients as $patient)print_r($patient->chairs);
Er zijn ook andere benaderingen, zoals een besproken hier
Om meer in contact te komen met relaties, ga hier