2014-06-17 14 views
9

Das klingt vielleicht wie eine offensichtliche Frage, aber ich möchte nur etwas Beruhigung bekommen.Laravel eifrig laden vs explizite Join

Mit Laravel eifrig laden Funktionalität, was ich verstehe es zwei Abfragen erstellen, um eine ganze Liste der damit verbundenen Ergebnisse (sagen Sie, wenn Sie mit zwei Tabellen arbeiten). Allerdings, und korrigieren Sie mich, wenn ich falsch liege, mit einer Join-Anweisung nur eine Abfrage, die eine weniger Rundreise in die Datenbank des Servers (MySQL) erstellt und ist eine effizientere Abfrage.

Ich weiß, dass Sie Join-Abfragen in Laravel schreiben können, das ist großartig, so die Frage ist: bin ich falsch zu vermuten, dass beim Abrufen verwandter Daten aus zwei oder mehr Tabellen, ich nicht mit eifrigen Laden und stattdessen nur stören schreibe meine eigenen Join-Anweisungen?

****** bearbeiten *******

Kommen wir zurück später dieses Jahr habe ich in meiner persönlichen Meinung sagen würde, nur die Abfragen schreiben, roh, und schreibe sie gut .

Antwort

9

Sie haben absolut Recht mit Ihrem Verständnis. Wenn Sie eine join-Anweisung schreiben, um zwei oder mehr Tabellen mit join() in Laravel zu verbinden, dann macht es nur eine Abfrage, wo ein Eloquent-Modell mit eager loading-Technik mehr als eine Abfrage erfordert.

soll ich nicht mit dem eifrigen Laden stören und stattdessen schreibe nur meine eigenen Aussagen beitreten

Eigentlich ist die eager loading ist eine Technik, bezogene Modelle laden Eloquent ORM einfach mit und verwendet Query Builder hinter der Szene und Sie können Eloquent Model Object verwenden, ohne die Abfrage selbst durchzuführen, und die Daten anders darstellen. Mithilfe von Eloquent ORM können Sie direkt mit dem Modell interagieren, das Objekte in der Datenbank mit zusätzlichen Funktionen darstellt. Am wichtigsten ist, dass es die Komplexität von SQL verbirgt und Ihnen ermöglicht, die Datenbankabfrage in einer OOP-Mode unter Verwendung von PHP Code durchzuführen.

Aber wenn man manuell join Methode aufrufen, die dann zu Illuminate\Database\Query\Builder Klasse gehört Ihnen die Query Builder direkt verwenden, die erfordert, dass Sie mehr Code zu schreiben und mehr Wissen über sql query erfordert, weil es nicht die Abfrage von Ihnen nicht verstecken, sondern hilft Ihnen, Anfragen zu machen genauer, aber Sie machen immer noch Anfragen.

Beide sind verschiedene Dinge und sie arbeiten anders. Sie können auf Google mit dem Begriff suchen.

+1

Danke für die Einsicht! Ich werde etwas mehr Nachforschungen anstellen. – Meowts