Laravel Model kurz mal erklärt

Heute mal leichte Kost. Laravel Model. Was ist das und was stellt man damit an, wie erstellt man ein Model und was kann es so alles.

Genug der langen Worte, fangen wir an!

Was ist ein Model?

Dafür blicken wir auf ein DesignPattern der Programmierung und zwar dem MVC Muster. MVC steht für Model, View und Controller.

Im groben kann man sagen, das Model handelt die Business Logik eines MVC basiertem Framwork. In Laravel enthält das Model die logische Struktur (Schema) und die Beziehungen (Relations) der dahinterliegenden Datenressourcen. Bei Laravel hat jede Datenbank Tabelle ein Model mit dem es mit der Anwendung kommuniziert. Also lesen, schreiben, updaten, löschen wird über das Model erst ermöglicht und verwaltet. Du findest seit Laravel 8 die Models unter app/models. Lange Zeit waren die Models im Root von app hinterlegt. Was keiner so richtig verstand, außer Oti (Taylor Otwell).

Wie kann man ein Laravel Model erstellen

Mit dem Kommandozeilen Tool artisan lässt sich bei Laravel so fast alles wichtige erstellen. Leider bis heute noch nicht die Views. Aber mit einem kleinen Workaround geht auch das. Aber zurück zum Thema. Ein Model erstellt ihr mit folgender Bash Zeile:

php artisan create:model <model-name>

Ersetzt <model-name> mit dem Namen den ihr wollt und zwar im Singular. Kleines Beispiel:

php artisan make:model Product -m

Wichtig ist hier anzumekren: dass ihr den Model namen in CamelCase schreibt und Singular bezeichnet sowie der erste Buchstabe groß sein sollte.

Man kann dem Artisan Command noch Parameter mitgeben. Zum Beispiel:

  • -m bzw. –migration (erstellt eine Migartiondatei)
  • -c (erstellt den dazugehörigen Controller. In umserem Fall also ProductController)
  • -r (erstellt eine Ressource. ProductRessource)

Wenn man den make:model Command ausführt erstellt uns Laravel artisan unter app/model/. Unser Model.

namespace App;

use Illuminate\Database\Eloquent\Model;

class Product extends Model
{
    //
}

Ihr könnt Euch mal aus Jucks in eurem vendor Verzeichnis die abgleitete abstrakte Model (Illuminate\Database\Eloquent\Model) Klasse anschauen. Hier wird einem bewusst, welche Vielfältigkeit mn hier einstellen bzw. überschreiben kann. Ihr könnt in eurem Model die Default Werte einfach überschreiben. Kleines Beispiel: Die Membervariable protected $perPage = 15. Wollt ihr eine Pagination mit nur 10 Treffern pro Seite. Schreibt dazu dann protected $perPage = 10; und schon habt ihr den Defaultwert überschrieben.

Wichtige Variablen die ihr eventuell mal anfassen müsst wären:

protected $table = ““; // Euer Datenbantabellennamen

protected $primaryKey = “id“; // Laravel nimmt an, dass jede Tabelle id als Primären Schlüssel verwendet. Falls das nicht so ist könnt ihr dies hier ändern

public $timestamps = false; // Laravel fügt von Haus aus jeder Tabelle noch zwei Spalten (created_at und updated_at) hinzu. Falls ihr das nicht wünscht, überschreibt die public Membervariable $timestamp mit false;

protected $hidden = [ ‘password’, ‘remember_token’]; // wenn Ihr ein Model abfragt werden euch alle Spalten ausgeliefert. Es sein den ihr wollt, dass bestimmte Felder nicht angezeigt werden sollen. Wie zum Beispiel das Passwort bei einer Abfrage nach dem User::find(1);

protected $fillable = [‘name’,’email’,’password’]; // sind Felder die geupdated werden dürfen.

protected $guarded = []; // Ist ein Array mit Spaltennamen des Models die nicht geupdated werden dürfen


Leave a Comment

Your email address will not be published. Required fields are marked *

*

*

Empfholende Artikel


Meine wichtigsten Artisan Commands

September 6, 2021

Als Laravel Entwickler braucht man sie ständig. Wenn man etwas länger Frontendarbeiten gemacht hat, kommt es schon mal vor, dass man etwas vergessen hat. Daher hier die Liste mit den häufigsten Artisan Commands: php artisan migrate:rollback –step=1 Ihr wollte eine oder x-beliebige Migrationen zurückspulen? Dann rollback und die Anzahl der Migrationssteps eingeben. php artisan migrate:refresh […]

Laravel – Slugs einrichten

September 2, 2021

Slugs machen die URLs Sprechender und damit auch SEO-(Freund)licher. Statt domain.de/posts/1 würde man mit domain.de/posts/mein-erster-blog-eintrag arbeiten. Um das in Laravel zu realisieren, bedient man sich in der Regel externer Bibliotheken. Einmal eine von Spartie und eine cviebrock. Man kann es natürlich aber auch selber machen. Die Bibliotheken sind hier aber vorzuziehen. Weil es ist keine […]

Laravel Blade Components

August 27, 2021

Componets – Aus VueJS kennen wir es und haben es bereits lieben gelernt. In Laravel können wir im Blade auch sehr dynamisch in Componenten arbeiten. Von Hause gibt uns Laravel Componets mit. Am Beispiel erklärt Stellen wir uns vor, wir wollen ein Blog erstellen. In der Übersichtsseite, sollen die Blogartikel untereinander gelistet werden. Wer ohne […]

Laravel Resource – Kurz mal erklärt

August 26, 2021

Nutzen wir zum Beispiel Larvel als Backend und beliefern das Frontend via api Route mit Daten, dann stellt sich manchmal die Frage, welche Daten braucht das Frontend eigentlich? Braucht man wirklich created_at oder updated_at mit auszuliefern? Sobald man sich so eine oder ähnliche Frage stellt wird es Zeit sich mal mit Laravel Resource auseinander zu […]

Laravel Spatie Permission Package – Kurz mal erklärt

August 25, 2021

Die belgische „SoftwareGang“ Spatie haut ein coole Laravel Package nach dem anderen raus. Super nützlich und sehr angenehm zu nutzen. Heute gibt es einen Einstieg in das Package Spatie Permission Package. I. Einrichten 1. Schritt: 2. Schritt: Permission Service Provider anmelden Füge dafür den „PermissionServiceProvider“ in der Datei config/app.php ein. 3. Schritt: Kopiere die migration […]

Laravel Test möglicher Fehler – Unknown formatter “name”

April 17, 2021

Falls Du gerade Dein Test geschrieben hast und du deinen Test mit php artisan test startest kann es sein, dass Du folgende Fehlermeldung erhalten kannst: Was ist passiert? Wahrscheinlich hast Du in deiner seUp() Methode oder in deiner Testfunktion ein factory eingebaut. Zum Beispiel Da Laravel einige Optimierungen vorgenommen hat, kannst Du nicht die Standard […]