Heim > Datenbank > MySQL-Tutorial > Wie kann ich mit dem Query Builder von Laravel effizient aus Unterabfragen auswählen?

Wie kann ich mit dem Query Builder von Laravel effizient aus Unterabfragen auswählen?

Linda Hamilton
Freigeben: 2025-01-12 09:28:41
Original
783 Leute haben es durchsucht

How Can I Efficiently Select from Subqueries Using Laravel's Query Builder?

Laravel Query Builder verarbeitet Unterabfragen effizient

Bei der Verwendung von Eloquent ORM zum Abrufen von Daten aus Unterabfragen verwenden Entwickler häufig eine Kombination aus toSql() und nativen Abfragen. Dieser Ansatz funktioniert zwar, ist aber nicht intuitiv genug. Eine effizientere Lösung finden Sie hier:

Zum Beispiel, um die Ergebnisanzahl aus der folgenden Unterabfrage zu extrahieren:

<code class="language-sql">SELECT COUNT(*) 
FROM (
  SELECT * 
  FROM abc 
  GROUP BY col1
) AS a;</code>
Nach dem Login kopieren

Laravel ermöglicht es uns, mithilfe von mergeBindings native Abfragen in eloquente Abfragen zusammenzuführen. Zuerst erstellen wir eine Eloquent Builder-Instanz für die Unterabfrage:

<code class="language-php">$sub = Abc::where(..)->groupBy(..);</code>
Nach dem Login kopieren

Wir verwenden dann DB::table, um eine neue Tabelle zu erstellen, die auf die Unterabfrage verweist, und legen die entsprechenden Bindungen manuell fest:

<code class="language-php">$count = DB::table( DB::raw("({$sub->toSql()}) as sub") )
    ->mergeBindings($sub->getQuery()) // 获取底层查询构造器
    ->count();</code>
Nach dem Login kopieren

Dieser Ansatz stellt sicher, dass die richtigen Bindungen auf die zusammengeführte Abfrage angewendet werden, um die gewünschten Ergebnisse zu erhalten, ohne dass eine manuelle Zeichenfolgenbearbeitung erforderlich ist.

Das obige ist der detaillierte Inhalt vonWie kann ich mit dem Query Builder von Laravel effizient aus Unterabfragen auswählen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage