sql >> Databasteknik >  >> RDS >> Mysql

Yii Sammanfogad tabell men inte alla valda data hämtas

Joins används bäst i Yii genom att skapa relationer , på så sätt behöver du inte skriva komplexa frågor

Börja med att lägga till främmande nycklar i dina sql-tabeller (t.ex. lägg till ett patient-ID för främmande nyckel i stolen)

Om du sedan återskapar din modell kan du se relationerna läggas till automatiskt (eller så kan du lägga till relationerna manuellt)

public function relations()
{

    return array(
        'chairs' => array(self::HAS_MANY, 'chair', 'patientId'),
    );
}

Och i stolmodellen ser du relationen

'patient' => array(self::BELONGS_TO, 'patient', 'patientId'),

Om du bara definierar relationen får du tillgång till värdena i den efterfrågade modellen som $model->relationName, om du vill använda en kolumn i 'var'-tillstånd, använd följande fråga i din modellfunktion(er)

$patients=Patient::model()->findAll(array(
                'condition' => "$field like '%$value%'",
                'with'=>array('chairs'),
                'select'=> "*",
                )); 

Nyckelordet "med" är viktigt och kan ta en rad listor med relationer som ska inkluderas i frågan. Frågevillkoret kommer att gälla för alla tabeller som ingår. Du kan hoppa över nyckelordet "med" här om du inte vill fråga ett fält från en annan tabell och bara behöver länkad utdata.

Och du kan nå stolarna som tilldelats patienten med

foreach($patients as $patient)print_r($patient->chairs);

Det finns också andra tillvägagångssätt , som en som diskuterades här

För att få mer kontakt med relationer, gå här




  1. Laravel (5.3) Talande - Relationsfråga

  2. Kopiera mysql-databas från fjärrserver till lokal dator

  3. Case Expression vs Case Statement

  4. Hur man kör eller laddar .po/.mo-filer för lokalisering i php