Heim >PHP-Framework >YII >So verwenden Sie yii2 hasone

So verwenden Sie yii2 hasone

(*-*)浩
(*-*)浩Original
2019-11-07 09:57:564040Durchsuche

Es gibt zwei Arten von Zuordnungen zwischen Tabellen in Yii2, die zur Angabe der Zuordnung zwischen zwei Modellen verwendet werden.

So verwenden Sie yii2 hasone

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn