Heim > Datenbank > MySQL-Tutorial > Wie kann man Datensätze aus einer Laravel-Unterabfrage mit GROUP BY effizient zählen?

Wie kann man Datensätze aus einer Laravel-Unterabfrage mit GROUP BY effizient zählen?

Susan Sarandon
Freigeben: 2025-01-12 06:06:41
Original
956 Leute haben es durchsucht

How to Efficiently Count Records from a Laravel Subquery with GROUP BY?

Unterabfrageauswahl im Laravel Query Builder

Das Auswählen von Daten aus einer Unterabfrage mit dem Abfrage-Builder des Eloquent ORM kann eine Herausforderung sein. In diesem Artikel geht es um ein spezielles Problem, mit dem ein Benutzer konfrontiert war, der die Datensatzanzahl für eine mit GROUP BY erstellte Unterabfrage abrufen wollte.

Tauchen Sie ein in die Fragen:

Benutzer haben zunächst versucht, dieses Problem mit dem folgenden Code zu beheben:

<code class="language-php">$sql = Abc::from('abc AS a')
    ->groupBy('col1')
    ->toSql();
$num = Abc::from(DB::raw($sql))
    ->count();
print $num;</code>
Nach dem Login kopieren

Obwohl dieser Ansatz logisch erscheint, ist er nicht die effizienteste Lösung.

Elegante und optimierte Lösung:

Die vorgeschlagene Lösung beinhaltet die Verwendung einer Kombination aus Roh-SQL und Bindungszusammenführung:

<code class="language-php">$sub = Abc::where(..)
    ->groupBy(..); // Eloquent Builder 实例

$count = DB::table(DB::raw("({$sub->toSql()}) as sub"))
    ->mergeBindings($sub->getQuery()) // 以正确的顺序合并绑定
    ->count();</code>
Nach dem Login kopieren

In dieser Lösung wird die Unterabfrage mithilfe einer Eloquent Builder-Instanz erstellt und dann in einen unformatierten SQL-Ausdruck eingebunden. Die mergeBindings()-Methode wird verwendet, um die Bindungen einer Unterabfrage mit den Bindungen der Hauptabfrage zu kombinieren. Auf diese Weise können Sie die erforderlichen Daten effizient aus der Unterabfrage abrufen.

Das obige ist der detaillierte Inhalt vonWie kann man Datensätze aus einer Laravel-Unterabfrage mit GROUP BY effizient zä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