Fallback Image
Fallback Image

Laravel Eloquent:

einfach, übersichtlich, schnell

Beim 14. Laravel Meetup Germany stand Object Rational Mapping (ORM) im Fokus. Die Verwendung von Laravel Eloquent erleichtert dabei die Arbeit mit Datenbanken – ganz ohne SQL.

Unser byte5-Neuzugang Marlon zeigte den Teilnehmenden des 14. Laravel Meetup Germany einige Tricks und Kniffe, um das Arbeiten in Datenbanken mit Laravel Eloquent zu erleichtern. Die folgenden Codebeispiele verdeutlichen, wie einfach Programme mit Eloquent optimiert werden können. Besonders häufig kommen dabei where-Funktionen zum Einsatz.

 

Eager Loading – effizientes Laden

Mit Eager Loading lässt sich das Laden von Daten deutlich effizienter gestalten als bei der Verwendung von Lazy Loading.

 

Eager Load vs. Lazy Load

© byte5

Eager Load vs. Lazy Load

Mit diesem Code sollen alle Posts aus einer Datenbank abgerufen und der jeweilige Titel sowie Autorenname ausgegeben werden. Dabei werden mit all alle Posts abgerufen und das User Model (Autor) des Posts in jedem foreach-Zyklus erneut geladen. Das führt zu unnötig vielen Datenbankabfragen. Eine schnellere Alternative stellt die Verwendung von with dar. Dabei werden ebenfalls alle Posts abgerufen, allerdings die User Models (Autoren) nur einmal und mit nur einer Datenbank-Abfrage geladen.

 

Datenbank-Abfragen und Models die mit Lazy Loading erzeugt werden:

Datenbankabfrage mit Lazy-Loading

Datenbankabfrage mit Lazy-Loading

Datenbank-Abfragen und Models, die mit Eager Loading erzeugt werden:

Datenbankabfrage mit Eager-Loading

© byte5

Datenbankabfrage mit Eager-Loading

Where-Abfragen – kurz und automatisiert

Das folgende Beispiel zeigt, wie ein einzelner Post in einer Datenbank anhand eines Slugs gefunden werden kann.

 

where-Abfrage mit Slugs

where-Abfrage mit Slugs

In einer herkömmlichen where-Abfrage beschreibt der erste Parameter die Datenbankspalte, in der gesucht werden soll. Parameter zwei definiert den Inhalt, nach dem gesucht wird. Das Ganze lässt sich allerdings durch die Verwendung von Slug verkürzen: Dabei generiert Laravel automatisch neue where-Funktionen für die angelegten Datenbankspalten.

 

Scopes – Abfragen zentral bearbeiten

Produktabfrage mit where

Produktabfrage mit where

Ziel dieses Beispiels ist es, alle aktiven Produkte aus der Datenbank abzurufen, deren Preis 250 oder weniger beträgt. Eine herkömmliche where-Abfrage ruft dabei die Produkte ab. Was grundsätzlich gut funktioniert, kann allerdings schnell unübersichtlich werden, sobald dieselbe Abfrage in mehreren Dateien durchgeführt wird. Möchten man zu einem späteren Zeitpunkt den Preis ändern, muss dies manuell in jeder Datei abgeändert werden. Etwas einfacher kann diese Abfrage mithilfe von Scopes gestaltet werden. Um die where-Abfrage an einer zentralen Stelle bearbeiten zu können, müssen die Scopes in dem Products Model hinzugefügt werden. Dabei ist zu beachten, dass die Namen der Scope-Funktionen immer mit „scope“ beginnen.

 

Produktabfrage mit scopes

© byte5

Produktabfrage mit scopes

Where + Datumsangabe – fehlerarm und übersichtlich

Abfrage aller Datenbankeinträge vom Mai 2021

© byte5

Abfrage aller Datenbankeinträge vom Mai 2021

Dieses Beispiel zielt darauf ab, 50 Posts aus der Datenbank zu laden, die im Mai 2021 erstellt wurden, und diese auszugeben. Bei einer herkömmlichen Abfrage werden die Posts aus der Datenbank geladen und das Erstellungsdatum mit zwei where-Abfragen eingegrenzt. Das kann schnell unübersichtlich werden. Auch schleichen sich hier leicht Logikfehler ein. Eine lesbarere und fehlerärmere Alternative stellt dieselbe Abfrage mit whereMonth und whereYear dar. Bei diesen beiden Funktionen können die Ergebnisse einfach durch Angabe von Monat bzw. Jahr eingegrenzt werden.

Mithilfe dieser einfach anzuwendenden Beispiele ist es möglich, Programme in Eloquent effizienter und fehleranfälliger zu gestalten.

 

Meetup Germany wird Meetup DACH

Wie bereits im vergangenen Meetup angekündigt, möchten wir mittelfristig die Laravel-Community im deutschsprachigen Raum zusammenzuführen. Daher wird es ab diesem Sommer keine Laravel Meetups Germany mehr geben. Stattdessen werden wir als Laravel DACH zukünftig die bisherigen Regionalgruppen bündeln. Das bedeutet für euch: vielfältige Themen, hohe Qualität und eine kontinuierliche Weiterentwicklung der Community in Deutschland, Österreich und der Schweiz.

Aber keine Angst, auf die allseits beliebten Vorort-Treffen in unserem Konfi mit Pizza und Bier müsst ihr in Zukunft nicht verzichten. Sobald es die aktuellen Entwicklungen wieder zulassen, werden wir zu einem Hybrid-Modell übergehen: Wir planen eine Kombination aus Talks vor Ort in Frankfurt und zugeschalteten Speaker:innen von anderen Standorten. Damit bleibt auch der persönliche Austausch in der Rhein-Main-Community weiterhin erhalten.

Das nächste Laravel Meetup zum Thema Best Practices findet am 08. Juli von 18:30 bis 20:00 Uhr statt.

Habt ihr Fragen an unsere Laravel-Expert:innen, Themenvorschläge für Talks oder möchtet selbst einmal als Speaker:in an einem Meetup teilnehmen? Wir freuen uns auf eure Nachricht an laravel@byte5.de

 


Komm zum

Laravel Meetup DACH!

Jetzt kostenlos anmelden