Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Yii Verbundene Tabelle, aber nicht alle ausgewählten Daten werden abgerufen

Joins werden am besten in Yii verwendet, indem Sie Relationen erstellen, so dass Sie keine komplexen Abfragen schreiben müssen

Beginnen Sie mit dem Hinzufügen von Fremdschlüsseln in Ihren SQL-Tabellen (z. B. Hinzufügen eines Fremdschlüssels patientId im Stuhl)

Wenn Sie als Nächstes Ihr Modell regenerieren, können Sie die automatisch hinzugefügten Beziehungen sehen (oder Sie können die Beziehungen manuell hinzufügen)

public function relations()
{

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

Und im Stuhlmodell sehen Sie die Beziehung

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

Die alleinige Definition der Beziehung ermöglicht Ihnen den Zugriff auf die Werte im abgefragten Modell als $model->relationName, wenn Sie eine Spalte in der 'where'-Bedingung verwenden möchten, verwenden Sie die folgende Abfrage in Ihrer/Ihren Modellfunktion(en)

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

Das Schlüsselwort „with“ ist wichtig und kann eine Reihe von Beziehungen annehmen, die in die Abfrage aufgenommen werden sollen. Die Abfragebedingung gilt für alle enthaltenen Tabellen. Sie können das Schlüsselwort „with“ hier überspringen, wenn Sie kein Feld aus einer anderen Tabelle abfragen möchten und nur die verknüpften Ausgabedaten benötigen.

Und die dem Patienten zugeordneten Stühle erreichen Sie mit

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

Es gibt auch andere Ansätze, wie einen, der unter hier

Um mehr über Beziehungen zu erfahren, gehen Sie hier