


Detaillierte Beispiele für den Betrieb von Multi-Table-Assoziationen in YII2
Vor kurzem bin ich bei der Arbeit auf Probleme im Zusammenhang mit der YII2-Mehrtabellenzuordnung gestoßen. Ich habe festgestellt, dass es im Internet nicht viele Informationen zu diesem Aspekt gibt, also habe ich darüber nachgedacht, das Problem selbst zu lösen, damit ich bei Bedarf darauf zurückgreifen kann Ich brauche es in Zukunft oder Freunde, die es brauchen, können darauf verweisen. Der folgende Artikel führt Sie hauptsächlich in die Verwendung von Multi-Table-Assoziationen in YII2 ein. Freunde, die es brauchen, können einen Blick darauf werfen.
Vorwort
Dieser Artikel gibt eine kurze Einführung in die auf mehrere Tabellen bezogene Abfrage von YII2.0. Der Artikel stellt es im Detail anhand von Beispielcode vor. Ich werde im Folgenden nicht viel sagen. Werfen wir einen Blick auf die detaillierte Einführung:
Erklären wir zunächst die Tabellenstruktur
Tabellenstruktur
Jetzt gibt es Bestelltabelle, Benutzertabelle, Produktlistentabelle, Produktbestandstabelle
Wenn Sie in YII andere Tabellen für die Abfrage direkt verknüpfen möchten, müssen Sie zuerst deren Verknüpfung im Modell definieren
Bestellung
class Order extends \yii\db\ActiveRecord.{ // 关联函数以get+要关联的数据表名来命名 // 这是获取下订单的客户 public function getUser(){ // 第一个参数为要关联的子表模型类名, // 第二个参数指定 通过子表的user_id,关联主表的usesr_id字段 // 这里写清楚点大概意思就是User.user_id => Order.user_id return $this->hasMany(User::className(), ['user_id' => 'user_id']); } }
1. HasMany und hasOne verwenden
Zugehörige Verwendung
//获取订单信息 $order = Order::findOne(1); //根据订单信息获取到用户信息 $user = $order->user;
//返回订单信息(包括用户信息) $order = Order::find(1)->with('user'); //或者 $order = Order::find(1)->getUser();
SELECT * FROM order WHERE id=1; SELECT * FROM user WHERE user.user_id=order.user_id;
●Bei Aufruf als Funktion wird ein ActiveQuery-Objekt zurückgegeben ($customer->getOrders()->all())
●Bei Aufruf als Attribut wird das Ergebnis des Modells ($customer->orders) direkt zurückgegeben
Wenn dies der Fall ist, hat sich die Bestelltabelle geändert. Wir hoffen, dass Sie bei einer erneuten Abfrage
$user = $order->user;
Was ist, wenn Sie SQL erneut ausführen möchten? Sie können
//先释放缓存 unset($order->user); $order->user;
Kreuztabellenabfrage
Hier kommt der Schlüssel Punkt! Wie Sie dem Tabellenstrukturdiagramm oben entnehmen können, stehen die Tabelle „Benutzer“ und „Order_goods“ nicht in direktem Zusammenhang. Wenn wir also anhand der Benutzerinformationen herausfinden möchten, welche Produkte der Benutzer gekauft hat, müssen wir die beiden Tabellen über die Tabelle „Bestellung“ verknüpfen. Was also tun? Die erste ist die Modellebene. Da wir die Überprüfung anhand des Benutzers durchführen, gehen wir zur Ebene des Benutzermodells, um die Zuordnung zu definieren.
public function getOrder() { return $this->hasMany(Order::className(), ['user_id' => 'user_id']); } public function getOrderGoods() { return $this->hasMany(OrderGoods::className(), ['order_id' => 'order_id'])-> via('order'); }
Hinweis hier: getOrderGoods Die beiden order_id Verweisen Sie auf die order_id in der mit getOrder verknüpften Bestellung, und die erste order_id bezieht sich auf die order_id in OrderGoods. Aber! Wir haben auch die einfachste Methode, nämlich die Verwendung von SQL-Anweisungen!
$map = 'select user.name, order.id, order_goods.goods_id, goods.goods_name, stock.stock_count from user LEFT JOIN order ON order.user_id = user.user_id LEFT JOIN order_goods ON order_goods.order_id = order.order_id LEFT JOIN goods ON goods.goods_id = order_goods.goods_id LEFT JOIN stock ON stock.goods_id = goods.goods_id'; $list1 = Article::findBySql($map)->asArray()->all();
Zusammenfassung
Das obige ist der detaillierte Inhalt vonDetaillierte Beispiele für den Betrieb von Multi-Table-Assoziationen in YII2. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



PyCharm ist eine sehr beliebte integrierte Entwicklungsumgebung (IDE) für Python. Sie bietet eine Fülle von Funktionen und Tools, um die Python-Entwicklung effizienter und komfortabler zu gestalten. Dieser Artikel führt Sie in die grundlegenden Betriebsmethoden von PyCharm ein und stellt spezifische Codebeispiele bereit, um den Lesern einen schnellen Einstieg zu erleichtern und sich mit der Bedienung des Tools vertraut zu machen. 1. Laden Sie PyCharm herunter und installieren Sie es. Zuerst müssen wir zur offiziellen Website von PyCharm gehen (https://www.jetbrains.com/pyc).

sudo (Superuser-Ausführung) ist ein Schlüsselbefehl in Linux- und Unix-Systemen, der es normalen Benutzern ermöglicht, bestimmte Befehle mit Root-Rechten auszuführen. Die Funktion von sudo spiegelt sich hauptsächlich in den folgenden Aspekten wider: Bereitstellung von Berechtigungskontrolle: sudo erreicht eine strikte Kontrolle über Systemressourcen und sensible Vorgänge, indem es Benutzern erlaubt, vorübergehend Superuser-Berechtigungen zu erhalten. Normale Benutzer können über sudo bei Bedarf nur vorübergehende Berechtigungen erhalten und müssen sich nicht ständig als Superuser anmelden. Verbesserte Sicherheit: Durch die Verwendung von sudo können Sie die Verwendung des Root-Kontos bei Routinevorgängen vermeiden. Die Verwendung des Root-Kontos für alle Vorgänge kann zu unerwarteten Systemschäden führen, da für jeden fehlerhaften oder nachlässigen Vorgang die vollen Berechtigungen gewährt werden. Und

Betriebsschritte und Vorsichtsmaßnahmen für LinuxDeploy LinuxDeploy ist ein leistungsstarkes Tool, mit dem Benutzer schnell verschiedene Linux-Distributionen auf Android-Geräten bereitstellen können, sodass Benutzer ein vollständiges Linux-System auf ihren Mobilgeräten erleben können. In diesem Artikel werden die Betriebsschritte und Vorsichtsmaßnahmen von LinuxDeploy ausführlich vorgestellt und spezifische Codebeispiele bereitgestellt, um den Lesern zu helfen, dieses Tool besser zu nutzen. Arbeitsschritte: LinuxDeploy installieren: Zuerst installieren

Vermutlich haben viele Benutzer zu Hause mehrere ungenutzte Computer und haben das Einschaltpasswort völlig vergessen, weil sie längere Zeit nicht benutzt wurden. Sie möchten also wissen, was zu tun ist, wenn sie das Passwort vergessen? Dann lasst uns gemeinsam einen Blick darauf werfen. Was tun, wenn Sie vergessen, F2 für das Win10-Startkennwort zu drücken? 1. Drücken Sie den Netzschalter des Computers und drücken Sie dann beim Booten F2 (verschiedene Computermarken haben unterschiedliche Tasten zum Aufrufen des BIOS). 2. Suchen Sie in der BIOS-Schnittstelle nach der Sicherheitsoption (der Speicherort kann je nach Computermarke unterschiedlich sein). Normalerweise im Einstellungsmenü oben. 3. Suchen Sie dann die Option „SupervisorPassword“ und klicken Sie darauf. 4. Zu diesem Zeitpunkt kann der Benutzer sein Passwort sehen und gleichzeitig die Option „Aktiviert“ daneben finden und auf „Dis“ umstellen.

Apple brachte einige Pro-exklusive Hardwarefunktionen in das iPhone 15 Pro und 15 Pro Max ein, die die Aufmerksamkeit aller auf sich zogen. Wir sprechen von Titanrahmen, schlanken Designs, dem neuen A17 Pro-Chipsatz, einem aufregenden 5-fach-Teleobjektiv und mehr. Von all dem Schnickschnack, der den iPhone 15 Pro-Modellen hinzugefügt wurde, bleibt die Aktionstaste ein herausragendes und hervorstechendes Merkmal. Es versteht sich von selbst, dass es eine nützliche Ergänzung zum Starten von Aktionen auf Ihrem iPhone ist. Allerdings könnten Sie versehentlich die Aktionstaste gedrückt halten und die Funktion unbeabsichtigt auslösen. Ehrlich gesagt ist es ärgerlich. Um dies zu vermeiden, sollten Sie die Aktionstaste auf dem iPhone 15 Pro und 15 Pro Max deaktivieren. lassen

Mit der Beliebtheit von Smartphones ist die Screenshot-Funktion zu einer der wesentlichen Fähigkeiten für die tägliche Nutzung von Mobiltelefonen geworden. Als eines der Flaggschiff-Handys von Huawei hat die Screenshot-Funktion des Huawei Mate60Pro natürlich große Aufmerksamkeit bei den Nutzern auf sich gezogen. Heute werden wir die Screenshot-Bedienungsschritte des Huawei Mate60Pro-Mobiltelefons teilen, damit jeder bequemer Screenshots machen kann. Erstens bietet das Huawei Mate60Pro-Mobiltelefon eine Vielzahl von Screenshot-Methoden, und Sie können die Methode auswählen, die Ihren persönlichen Gewohnheiten entspricht. Im Folgenden finden Sie eine detaillierte Einführung in mehrere häufig verwendete Abfangfunktionen:

CSS-Webseiten-Scroll-Überwachung: Überwachen Sie das Scrollen von Webseiten und führen Sie entsprechende Vorgänge aus. Mit der kontinuierlichen Entwicklung der Front-End-Technologie werden die Effekte und Interaktionen von Webseiten immer vielfältiger. Unter diesen ist die Scroll-Überwachung eine gängige Technologie, mit der einige Spezialeffekte oder Vorgänge basierend auf der Scroll-Position ausgeführt werden können, wenn der Benutzer auf der Webseite scrollt. Im Allgemeinen kann die Scroll-Überwachung über JavaScript implementiert werden. In einigen Fällen können wir den Effekt der Scroll-Überwachung jedoch auch durch reines CSS erzielen. In diesem Artikel wird erläutert, wie das Scrollen von Webseiten über CSS implementiert wird

Apples iPhone 15 Pro und iPhone 15 Pro Max führen eine neue programmierbare Aktionstaste ein, die den herkömmlichen Klingel-/Stummschalter über den Lautstärketasten ersetzt. Lesen Sie weiter, um zu erfahren, was die Aktionsschaltfläche bewirkt und wie Sie sie anpassen können. Eine neue Aktionstaste bei Apple iPhone 15 Pro-Modellen ersetzt den herkömmlichen iPhone-Schalter, der Klingeln und Lautlos aktiviert. Standardmäßig aktiviert die neue Taste weiterhin beide Funktionen durch langes Drücken, aber Sie können durch langes Drücken auch eine Reihe anderer Funktionen ausführen, darunter Schnellzugriff auf die Kamera oder Taschenlampe, die Aktivierung von Sprachnotizen, den Fokusmodus, die Übersetzung usw Barrierefreiheitsfunktionen wie eine Lupe. Sie können es auch mit einer einzigen Verknüpfung verknüpfen, was eine Menge weiterer Möglichkeiten eröffnet
