sql >> Database >  >> RDS >> Mysql

Yii Samengevoegde tabel maar niet alle geselecteerde gegevens worden opgehaald

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




  1. Databases migreren naar uw resellerserver

  2. Hoe objecten te cachen die zijn gemaakt vanuit de MySQL-database

  3. Hulp nodig met SQL voor het rangschikken van zoekresultaten

  4. PHP Fatale fout:oproep naar ongedefinieerde functie mysqli_stmt_get_result()