Es gibt zwei Arten von Zuordnungen zwischen Tabellen in Yii2, die zur Angabe der Zuordnung zwischen zwei Modellen verwendet werden.
Eins-zu-viele: hasMany
Eins-zu-eins: hasOne (empfohlenes Lernen: yii-Tutorial )
Rückgabeergebnisse: Die Rückgabeergebnisse dieser beiden Methoden sind yiidbActiveQuery-Objekte
Der erste Parameter: der Klassenname des zugehörigen Modells.
Der zweite Parameter: ist ein Array, wobei die Schlüssel die Attribute im zugehörigen Modell und die Werte die Attribute im aktuellen Modell sind.
Verwendung von Assoziationen
Jetzt erhalten wir alle Bestellinformationen eines Kunden
$customer = Customer::findOne(1); $orders = $customer->orders; // 通过在Customer中定义的关联方法(getOrders())来获取这个客户的所有的订单。
Die beiden obigen Codezeilen generieren die folgende SQL-Anweisung
SELECT * FROM customer WHERE id=1; SELECT * FROM order WHERE customer_id=1;
Zwischenspeicherung der Assoziationsergebnisse
Wenn sich die Bestellung des Kunden ändert, rufen wir sie erneut auf
$orders = $customer->orders;
Wenn Sie die Bestellung erneut erhalten, werden Sie das feststellen es gibt keine Veränderung. Der Grund dafür ist, dass die Datenbank nur abgefragt wird, wenn $customer->orders zum ersten Mal ausgeführt wird, die Ergebnisse zwischengespeichert werden und SQL bei nachfolgenden Abfragen nicht ausgeführt wird.
Was ist, wenn ich SQL erneut ausführen möchte? Sie können
unset($customer->orders); $customer->orders;
ausführen und dann Daten aus der Datenbank abrufen.
Codebeschreibung:
// 执行sql语句: SELECT * FROM customer WHERE id=1 $customer = Customer::findOne(1); //执行sql:SELECT * FROM order WHERE customer_id=1 $orders1 = $customer->orders; //这个不会执行sql,直接使用上面的缓存结果 $orders2 = $customer->orders; //如果中间的用户订单有变化,我们就不能从缓存中获取,要unset掉 unset($customer->orders); $orders2 = $customer->orders;
Das obige ist der detaillierte Inhalt vonSo verwenden Sie yii2 hasone. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!