Mysql
 sql >> Database >  >> RDS >> Mysql

Yii Tabella unita ma non tutti i dati selezionati vengono recuperati

I join vengono utilizzati al meglio in Yii creando relazioni , in questo modo non dovrai scrivere query complesse

Inizia aggiungendo chiavi esterne nelle tabelle sql (ad es. aggiungi un PatientId Foreignkey sulla sedia)

Successivamente, se rigeneri il tuo modello puoi vedere le relazioni aggiunte automaticamente (oppure puoi aggiungere manualmente le relazioni)

public function relations()
{

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

E nel modello della sedia vedrai la relazione

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

La definizione della sola relazione consente di accedere ai valori nel modello interrogato come $model->relationName, se si desidera utilizzare una colonna nella condizione 'where', utilizzare la query seguente nelle funzioni del modello

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

La parola chiave "con" è importante e può richiedere un array di elenchi di relazioni da includere nella query. La condizione della query si applicherà a tutte le tabelle incluse. Puoi saltare la parola chiave "con" qui se non vuoi interrogare un campo da un'altra tabella e hai solo bisogno dei dati di output collegati.

E puoi raggiungere le poltrone assegnate al paziente tramite

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

Esistono anche altri approcci , come quello discusso qui

Per entrare più in contatto con le relazioni, vai qui