Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Laravel Eloquent vs. Query Builder – Warum Eloquent verwenden, um die Leistung zu verringern?

Eloquent ist Laravels Implementierung des Active Record-Musters und kommt mit all seinen Stärken und Schwächen.

Active Record ist eine gute Lösung für die Verarbeitung einer einzelnen Entität in CRUD-Manier – das heißt, eine neue Entität mit ausgefüllten Eigenschaften erstellen und sie dann in einer Datenbank speichern, einen Datensatz aus einer Datenbank laden oder löschen.

Sie werden viel von den Funktionen von Eloquent profitieren, wie z. B. Dirty Checking (um SQL UPDATE nur für die geänderten Felder zu senden), Modellereignisse (z. B. um administrative Warnungen zu senden oder Statistikzähler zu aktualisieren, wenn jemand ein neues Konto erstellt hat), Traits ( Zeitstempel, vorläufiges Löschen, Ihre benutzerdefinierten Eigenschaften), eifriges/faules Laden usw. Sie können auch domänengesteuerte Muster anwenden und einige Teile der Geschäftslogik in Ihren Active Record-Entitäten implementieren, z. B. Validierung, Verwaltung von Beziehungen, Berechnungen usw.

Aber wie Sie bereits wissen, hat Active Record einen gewissen Leistungspreis.

Wenn Sie einen oder mehrere Datensätze verarbeiten, müssen Sie sich keine Sorgen machen. Aber für Fälle, in denen Sie viele Datensätze lesen (z. B. für Datagrids, für Berichte, für die Stapelverarbeitung usw.), ist die einfache Laravel DB Methoden ist ein besserer Ansatz.

Für unsere Laravel-basierten Anwendungen verwenden wir beide Ansätze, wenn wir dies für angemessen halten. Wir verwenden Eloquent von Laravel für UI-Formulare, um einen einzelnen Datensatz zu verarbeiten und DB zu verwenden Methoden (unterstützt durch SQL-Ansichten mit zusätzlichen datenbankmodulspezifischen Leistungsoptimierungen) zum Abrufen von Daten für UI-Tabellen, Exportaufgaben usw. Es funktioniert auch gut mit RESTful-APIs - Eloquent für GET, PUT, POST, DELETE mit einem Schlüssel und DB für GET ohne Schlüssel, aber mit Filtern und Sortierung und Paging.