Heim > Artikel > Backend-Entwicklung > Problem mit Laravel-Mehrtabellen-Assoziationsabfragen
Produktliste (Produkt)
Paket
Paketinformationstabelle (package_data).
id (selbst-inkrementierende ID)
Name
...
id (selbst-inkrementierende ID)
Titel(Paketname)
....
id (selbst-inkrementierende ID)
product_id (Produkt-ID)
Paket-ID (Paket-ID)
product_num (Anzahl der Produkte)
...
Ein Paket enthält mehrere Produkte. Die Pakettabelle und die Paketinformationstabelle hätten jedoch in einer Tabelle platziert werden können. Um redundante Daten zu reduzieren, wurde die Pakettabelle jedoch einfach vertikal unterteilt.
Im obigen Fall möchte ich wissen, wie viele Produkte A in Paket A enthalten sind. Wie definiert man also die Beziehungen im Modell?
In der oben genannten Situation möchte ich wissen, wie viele Produkte A, Produkt B usw. insgesamt für Paket A und Paket B verwendet werden. Wie soll ich also vorgehen?
ps: Die oben genannten Fragen wurden in den offiziellen Dokumenten gelesen, aber mein IQ ist zu niedrig, was zu unklarem Verständnis führt, daher bin ich hier, um Sie um Rat zu bitten.
Produktliste (Produkt)
Paket
Paketinformationstabelle (package_data).
id (selbst-inkrementierende ID)
Name
...
id (selbst-inkrementierende ID)
Titel(Paketname)
....
id (selbst-inkrementierende ID)
product_id (Produkt-ID)
Paket-ID (Paket-ID)
product_num (Anzahl der Produkte)
...
Ein Paket enthält mehrere Produkte. Die Pakettabelle und die Paketinformationstabelle hätten jedoch in einer Tabelle platziert werden können. Um redundante Daten zu reduzieren, wurde die Pakettabelle jedoch einfach vertikal unterteilt.
Im obigen Fall möchte ich wissen, wie viele Produkte A in Paket A enthalten sind. Wie definiert man also die Beziehungen im Modell?
In der oben genannten Situation möchte ich wissen, wie viele Produkte A, Produkt B usw. insgesamt für Paket A und Paket B verwendet werden. Wie soll ich also vorgehen?
ps: Die oben genannten Fragen wurden in den offiziellen Dokumenten gelesen, aber mein IQ ist zu niedrig, was zu unklarem Verständnis führt, daher bin ich hier, um Sie um Rat zu bitten.
Ähem~, endlich habe ich die Antwort im Dokument gefunden. Link hier. Bitte suchen Sie nach dem Abschnitt „Nested Eager Loading“, um ihn selbst anzuzeigen.
Sagen Sie mir den konkreten Prozess:
<code class="php">public function hasManyData() { return $this->hasMany(PackageData::class, 'package_id', 'id'); }</code>
<code class="php">public function BelongsToProduct() { return $this->belongsTo(Product::class, 'product_id', 'id'); }</code>
<code class="php">$packageList = Package::with('hasManyData', 'package_data.BelongsToProduct')->get();</code>
Du bist fertig!
ps: Die von einem Kollegen angegebene Methode ist ungefähr so: Das Folgende ist der Pseudocode:
<code class="php">$packageList = Package::with('hasManyData')->get(); foreach( $packageList as $key => $val ) { ... $productList = PackageData::with('BelongsToProduct')->where(...)->get(); ... }</code>
Ich finde die Leistung schrecklich~ und ich möchte sie nicht mehr studieren! Mein Kopf ist etwas heiß, daher ist das, was ich geschrieben habe, etwas chaotisch. Bitte korrigieren Sie mich, wenn ich falsch liege. Vielen Dank an alle, die sich diese Ausgabe angesehen haben~