Eine Datenbank speichert Zeilen in Tabellen, ein Programm arbeitet mit Objekten. Eloquent ist
die Schicht dazwischen. Jede Tabelle bekommt eine Klasse, jede Zeile wird zu einem Objekt
dieser Klasse. Statt eine Abfrage zu formulieren, schreibt man Rechnung::find(42).
Der praktische Gewinn liegt bei den Beziehungen. Dass eine Rechnung zu einem Kunden gehört und mehrere Posten hat, wird einmal deklariert und ist danach überall verfügbar. Das erspart eine Menge wiederholter Abfragen und macht den Code lesbar für jemanden, der die Fachlichkeit kennt, aber nicht die Tabellenstruktur.
Worauf zu achten ist
Der bekannteste Stolperstein heißt N+1. Eine Schleife über hundert Rechnungen, die in jedem Durchlauf den zugehörigen Kunden nachlädt, erzeugt hunderteins Abfragen statt zwei. Bei zehn Testdatensätzen fällt das niemandem auf. Bei zehntausend echten liegt die Seite. Abhilfe schafft, die Beziehung gleich mitzuladen.
Der zweite Punkt: Bequemlichkeit verführt dazu, Fachlogik in die Model-Klassen zu schieben, bis sie tausende Zeilen lang sind. Wo die Logik stattdessen hingehört, ist eine Entscheidung, die am Anfang eines Projekts getroffen werden sollte und nicht nach zwei Jahren.