Eloquent ORM für PHP: Vollständige Anleitung mit Beispielen

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Was ist Eloquent ORM und wozu wird es benötigt?

\n\n

Eloquent ORM (Object-Relational Mapping) ist eine integrierte Bibliothek für die Arbeit mit Datenbanken im PHP-Framework Laravel. Sie bietet eine elegante, intuitive Möglichkeit zur Interaktion mit relationalen Datenbanken (MySQL, PostgreSQL, SQLite, SQL Server) unter Verwendung des Active Record-Musters.

\n\n

Wozu wird Eloquent benötigt?

\n
    \n
  • SQL-Abstraktion: Anstatt rohe SQL-Abfragen zu schreiben, arbeiten Sie mit PHP-Objekten. Das macht den Code sauberer, lesbarer und sicherer.
  • \n
  • Active Record: Jedes Eloquent-Modell repräsentiert eine Tabelle in der Datenbank. Eine Modellinstanz ist eine Zeile in dieser Tabelle. Sie können Daten lesen, ändern und speichern, indem Sie einfach mit den Eigenschaften des Objekts arbeiten.
  • \n
  • Schutz vor SQL-Injection: Eloquent verwendet PDO (PHP Data Objects) mit vorbereiteten Abfragen, was Benutzereingaben automatisch maskiert.
  • \n
  • Beziehungen: Einfaches Definieren und Verwenden von Verknüpfungen zwischen Tabellen (eins-zu-eins, eins-zu-viele, viele-zu-viele usw.).
  • \n
  • Sammlungen: Abfrageergebnisse werden als Sammlungen zurückgegeben – leistungsstarke Objekte, die viele nützliche Methoden zur Datenverarbeitung bieten (map, filter, reduce, pluck usw.).
  • \n
  • Mutators und Accessors: Ermöglichen die Transformation von Daten beim Speichern (Mutators) oder beim Lesen (Accessors) aus der Datenbank.
  • \n
\n\n

Eloquent ist nicht nur eine Bibliothek, sondern ein grundlegender Bestandteil des Laravel-Ökosystems. Das Verständnis von Eloquent ist für eine effektive Entwicklung mit diesem Framework unerlässlich.

\n\n

Installation

\n\n

Eloquent ORM wird automatisch zusammen mit dem Laravel-Framework installiert. Wenn Sie ein neues Laravel-Projekt erstellen, ist Eloquent bereits einsatzbereit.

\n\n

Installation über Composer (wenn Sie Laravel verwenden):

\n
composer create-project laravel/laravel example-app\ncd example-app
\n\n

Installation von Eloquent ohne Laravel (Standalone):

\n

Sie können Eloquent auch außerhalb von Laravel verwenden, z. B. in Ihrem eigenen Projekt. Dazu müssen Sie das Paket illuminate/database installieren und eine Datenbankverbindung konfigurieren.

\n
composer require illuminate/database\ncomposer require illuminate/events // Für die Arbeit mit Modellereignissen (optional)
\n\n

Beispiel für die Konfiguration einer Verbindung (Standalone):

\n
<?php\nrequire 'vendor/autoload.php';\n\nuse Illuminate\\Database\\Capsule\\Manager as Capsule;\n\n$capsule = new Capsule;\n\n$capsule->addConnection([\n    'driver'    => 'mysql',\n    'host'      => 'localhost',\n    'database'  => 'your_database',\n    'username'  => 'your_username',\n    'password'  => 'your_password',\n    'charset'   => 'utf8',\n    'collation' => 'utf8_unicode_ci',\n    'prefix'    => '',\n]);\n\n// Globale Eloquent-Instanz einrichten\n$capsule->setAsGlobal();\n\n// Eloquent starten\n$capsule->bootEloquent();\n
\n\n

Schnellstart mit einem Codebeispiel

\n\n

Angenommen, wir haben eine Tabelle users in der Datenbank. Erstellen wir ein Eloquent-Modell für die Arbeit mit ihr.

\n\n

Schritt 1: Modell erstellen

\n

In Laravel werden Modelle normalerweise in app/Models gespeichert. Erstellen wir eine Datei User.php:

\n
<?php\n\nnamespace App\\Models;\n\nuse Illuminate\\Database\\Eloquent\\Model;\n\nclass User extends Model\n{\n    // Eloquent verknüpft dieses Modell automatisch mit der Tabelle 'users'\n    // Der Tabellenname wird aus dem Klassennamen im Plural (snake_case) abgeleitet\n    // Wenn die Tabelle anders heißt, geben Sie die Eigenschaft $table an\n    // protected $table = 'my_users';\n\n    // Geben Sie an, welche Felder massenweise zugewiesen werden können (Schutz vor Massenzuweisung)\n    protected $fillable = ['name', 'email', 'password'];\n}\                    

Empfehlungen