de de de nl en de de ca es de de de en en en de en de de en de de en de de da de de en de en de de en de de de de de en de de de de de en de de de de de en en de de de de de da it fr de de de ceb en en de ca de fr de it de
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.
Abruf von aller Posts inkl. Titel und Autorenname. - © byte5
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:
Datenbank-Abfragen und Models, die mit Eager Loading erzeugt werden:
Where-Abfragen – kurz und automatisiert
Das folgende Beispiel zeigt, wie ein einzelner Post in einer Datenbank anhand eines Slugs gefunden werden kann.
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
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.
Abfrage aller aktiven Produkte mit einem Preis <= 250 mit Scopes. - © byte5
Where + Datumsangabe – fehlerarm und übersichtlich
Laden aller Posts einer Datenbank vom Mai 2021. - © byte5
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!
Neuigkeiten, Diskussionen, Fragen – sei dabei! Das nächste Laravel Meetup findet online am 08. Juli, von 18:30 -20:00 Uhr statt.
Willkommen bei byte5 ... Alexandra Hochhaus Wir bei byte5 ... Vincent Bärtsch Willkommen bei byte5 ... David Glogaza Wir bei byte5 ... Jonathan Rüsche Umbraco Version 10
Ob Blogposts, Übersetzungen oder Case-Storys – Lea kümmert sich um Texte jeder Art. Die informatikbegeisterte Wissenschaft-Medien-Kommunikatorin pflegt außer dem byte5-Blog auch die Social-Media-Kanäle und ist zuständig für die Organisation und Durchführung von Events.
60314 Frankfurt am Main
Telefon: +49 (0) 69 8700506 - 0
Fax: +49 (0) 69 8700506 - 60
Willkommen bei byte5 ... Alexandra Hochhaus Wir bei byte5 ... Vincent Bärtsch Willkommen bei byte5 ... David Glogaza Wir bei byte5 ... Jonathan Rüsche Umbraco Version 10 The Developer’s Diary Teil 3
Copetri Convention 2022 Wir bei byte5 ... Marlon Basten byte5 in Österreich Volltextsuchen mit Laravel Scout Willkommen bei byte5 ... Vincent Bärtsch Deutschlands beste Arbeitgeber