Heim PHP-Framework Laravel Laravel-Entwicklung: Wie erstellt man ein Datenbankmodell mit Laravel Eloquent?

Laravel-Entwicklung: Wie erstellt man ein Datenbankmodell mit Laravel Eloquent?

Jun 14, 2023 am 08:21 AM
laravel eloquent 数据库模型

Laravel-Entwicklung: Wie erstellt man ein Datenbankmodell mit Laravel Eloquent?

Laravel ist ein beliebtes PHP-Framework, das ein leistungsstarkes und benutzerfreundliches Tool für den Datenbankbetrieb bereitstellt – Laravel Eloquent. In der Vergangenheit erforderte die Verwendung von PHP zur Durchführung von Datenbankoperationen zwangsläufig das Schreiben einer großen Anzahl langwieriger SQL-Anweisungen und umständlicher Codes. Mit Laravel Eloquent können jedoch problemlos Datenbankmodelle erstellt und eine schnelle Entwicklung und Wartung erreicht werden. In diesem Artikel wird erläutert, wie Sie mit Laravel Eloquent ein Datenbankmodell erstellen.

1. Datenbanktabellen erstellen

Zuerst müssen Sie Datenbanktabellen durch Datenbankmigration (Migration) erstellen. In Laravel kann dieser Vorgang mit dem Befehlszeilentool artisan durchgeführt werden. Geben Sie ein:

php artisan make:migration create_users_table
Nach dem Login kopieren

Dieser Befehl erstellt eine Migrationsdatei im Verzeichnis app/database/migrations. Der Dateiname besteht aus dem aktuellen Datum und der aktuellen Uhrzeit sowie dem Namen der Migration, z. B. 2019_08_17_000000_create_users_table.php. Ändern Sie die Migrationsdatei und schreiben Sie die entsprechende Datenbankstruktur.

Schema::create('users', function (Blueprint $table) {
    $table->increments('id');
    $table->string('name');
    $table->string('email')->unique();
    $table->timestamp('email_verified_at')->nullable();
    $table->string('password');
    $table->rememberToken();
    $table->timestamps();
});
Nach dem Login kopieren

Der obige Code erstellt eine Tabelle mit dem Namen „Benutzer“, die 8 Felder enthält: ID, Name, E-Mail, email_verified_at, Passwort, erinnere_token, erstellt_at und aktualisiert_at. Führen Sie als Nächstes die Migrationsdatei aus, um die Datenbanktabellen zu erstellen.

php artisan migrate
Nach dem Login kopieren

2. Ein Modell erstellen

Das Erstellen eines Modells (Modells) in der Anwendung ist der erste Schritt bei der Verwendung von Laravel Eloquent. Sie können ein Modell mit dem Handwerker-Tool erstellen:

php artisan make:model User
Nach dem Login kopieren

Der obige Befehl erstellt ein Modell mit dem Namen „Benutzer“ im App-Verzeichnis, das der Benutzertabelle in der Datenbank entspricht. Standardmäßig geht Laravel Eloquent davon aus, dass der Datenbanktabellenname die Pluralform des Modellnamens ist. Wenn Sie einem anderen Tabellennamen entsprechen oder eine andere Datenbankverbindung verwenden müssen, können Sie die Attribute $table und $connection im Modell definieren .

Die Definition des Modells lautet wie folgt:

namespace App;

use IlluminateDatabaseEloquentModel;

class User extends Model
{
    //
}
Nach dem Login kopieren

3. Modellattribute

Im Modell hat Laravel Eloquent einige Standardattribute und -methoden definiert, darunter:

  1. $fillable-Attribut: definiert Attribute, die stapelweise zugewiesen werden können Injektionsattacken vorzubeugen. Kann aus einer Erstellungs-/Aktualisierungsanforderung mit den Methoden create() und update() ausgefüllt werden.
protected $fillable = [
    'name', 'email', 'password',
];
Nach dem Login kopieren
  1. $hidden attribute: Definiert Attribute, die im Array ausgeblendet werden sollen. Bei der Serialisierung werden diese Eigenschaften ausgeblendet.
protected $hidden = [
    'password', 'remember_token',
];
Nach dem Login kopieren
  1. $casts-Attribut: Definieren Sie Eigenschaften, die in native Typen (Ganzzahl, Boolescher Wert, Gleitkomma usw.) oder benutzerdefinierte Objekte konvertiert werden sollen.
protected $casts = [
    'email_verified_at' => 'datetime',
];
Nach dem Login kopieren

4. Modellmethoden

Laravel Eloquent bietet einige Methoden zur Durchführung von Datenoperationen im Modell. Hier sind einige der gebräuchlichsten Modellmethoden:

  1. where(): wird zum Hinzufügen von WHERE-Bedingungen verwendet.
$user = User::where('name', 'John')->first();
Nach dem Login kopieren
Nach dem Login kopieren
  1. find(): wird verwendet, um Datensätze anhand der Primärschlüssel-ID des Modells zu finden.
$user_id = 1;
$user = User::find($user_id);
Nach dem Login kopieren
  1. first(): Gibt den ersten gefundenen Datensatz zurück.
$user = User::where('name', 'John')->first();
Nach dem Login kopieren
Nach dem Login kopieren
  1. get(): Gibt alle gefundenen Datensätze zurück.
$users = User::all();
Nach dem Login kopieren
  1. create(): wird verwendet, um einen neuen Datensatz zu erstellen.
User::create(['name' => 'Taylor', 'email' => 'taylor@example.com', 'password' => 'password']);
Nach dem Login kopieren
  1. update(): wird zum Aktualisieren von Datensätzen verwendet.
$user = User::find($user_id);
$user->name = 'Updated Name';
$user->save();
Nach dem Login kopieren
  1. delete(): wird zum Löschen von Datensätzen verwendet.
$user = User::find($user_id);
$user->delete();
Nach dem Login kopieren

Die oben genannten sind einige grundlegende Laravel Eloquent-Modellmethoden, mit denen sich schnell Hinzufügungs-, Lösch-, Änderungs- und Abfragevorgänge in der Datenbank implementieren lassen.

5. Assoziationsbeziehungen

Laravel Eloquent bietet auch eine praktische Möglichkeit, verschiedene Beziehungen zu definieren: Eins zu Eins, Eins zu Viele, Viele zu Viele) und polymorphe Beziehungen. Hier einige Beispiele:

  1. Eins zu Eins (Eins zu Eins)

Bei einer Eins-zu-eins-Zuordnung ist jede Modellinstanz nur mit einer anderen verwandten Modellinstanz verknüpft. Beispielsweise kann jede Zeile in der Benutzertabelle mit einer Zeile in der Telefontabelle verknüpft sein, in der die Telefonnummer des Benutzers gespeichert ist. Definieren Sie im Benutzermodell eine phone()-Methode, um die Eins-zu-eins-Beziehung zwischen dem Modell und dem Telefonmodell darzustellen.

class User extends Model
{
    public function phone()
    {
        return $this->hasOne('AppPhone');
    }
}
Nach dem Login kopieren

Definieren Sie im Telefonmodell die entgegengesetzte hasOne()-Methode.

class Phone extends Model
{
    public function user()
    {
        return $this->belongsTo('AppUser');
    }
}
Nach dem Login kopieren
  1. One to Many

In einer Eins-zu-viele-Beziehung ist eine Modellinstanz mit einer anderen Modellinstanz verknüpft, und eine andere Instanz kann mit mehreren Modellinstanzen verknüpft sein. Beispielsweise kann auf einer Forum-Site jede Vorlage mit vielen Kommentaren verknüpft sein. Definieren Sie im Thread-Modell eine comments()-Methode, um die Eins-zu-viele-Beziehung zwischen dem Modell und dem Comment-Modell darzustellen.

class Thread extends Model
{
    public function comments()
    {
        return $this->hasMany('AppComment');
    }
}
Nach dem Login kopieren

Definieren Sie im Kommentarmodell die entgegengesetzte gehörtTo()-Methode.

class Comment extends Model
{
    public function thread()
    {
        return $this->belongsTo('AppThread');
    }
}
Nach dem Login kopieren
  1. Many to Many

In einer Viele-zu-Viele-Beziehung ist die Modellinstanz mit vielen anderen Modellinstanzen verknüpft, und jede verwandte Modellinstanz kann auch mit mehreren Modellinstanzen verknüpft sein. Beispielsweise kann in einem Blog jeder Artikel mehrere Kategorie-Tags haben, und jedes Tag kann auch mehrere Artikel haben. Definieren Sie im Post-Modell eine tags()-Methode, um die Viele-zu-Viele-Beziehung zwischen dem Modell und dem Tag-Modell darzustellen.

class Post extends Model
{
    public function tags()
    {
        return $this->belongsToMany('AppTag');
    }
}
Nach dem Login kopieren

Definieren Sie im Tag-Modell die entgegengesetzte gehörtToMany()-Methode.

class Tag extends Model
{
    public function posts()
    {
        return $this->belongsToMany('AppPost');
    }
}
Nach dem Login kopieren
  1. 多态关联(Polymorphic Relations)

多态关联允许模型通过多个中介模型与其他模型进行多对多关联。例如,在应用中可以使用comments模型对其他类型的模型进行评论。在Comment模型中,定义一个commentable()方法,表示该模型与所有支持评论的模型之间的多态关系。

class Comment extends Model
{
    public function commentable()
    {
        return $this->morphTo();
    }
}
Nach dem Login kopieren

在支持评论的模型中,例如Post和Video模型中,定义morphMany()方法。

class Post extends Model
{
    public function comments()
    {
        return $this->morphMany('AppComment', 'commentable');
    }
}

class Video extends Model
{
    public function comments()
    {
        return $this->morphMany('AppComment', 'commentable');
    }
}
Nach dem Login kopieren

以上是Laravel Eloquent提供的关联关系,可以让开发者在数据库模型中轻松处理复杂的关系结构。

七、总结

本文介绍了使用Laravel Eloquent构建数据库模型的基础知识,包括创建数据库表、创建模型、模型属性和方法,以及关联关系。Laravel Eloquent提供了一种简单和直观的方式来操作数据库,使得开发者能够快速构建应用程序,并为复杂的数据库结构提供了更干净、易于维护的解决方案。希望这篇文章对你的学习和开发有所帮助。

Das obige ist der detaillierte Inhalt vonLaravel-Entwicklung: Wie erstellt man ein Datenbankmodell mit Laravel Eloquent?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie bekomme ich den Rückgabecode, wenn das Senden von E -Mails in Laravel fehlschlägt? Wie bekomme ich den Rückgabecode, wenn das Senden von E -Mails in Laravel fehlschlägt? Apr 01, 2025 pm 02:45 PM

Methode zum Abholen des Rücksendecode, wenn das Senden von Laravel -E -Mails fehlschlägt. Wenn Sie Laravel zur Entwicklung von Anwendungen verwenden, stellen Sie häufig Situationen auf, in denen Sie Überprüfungscodes senden müssen. Und in Wirklichkeit ...

Laravel -Zeitplanaufgabe wird nicht ausgeführt: Was soll ich tun, wenn die Aufgabe nicht nach Zeitplan ausgeführt wird: Befehl ausführen? Laravel -Zeitplanaufgabe wird nicht ausgeführt: Was soll ich tun, wenn die Aufgabe nicht nach Zeitplan ausgeführt wird: Befehl ausführen? Mar 31, 2025 pm 11:24 PM

Laravel -Zeitplan -Aufgabe Ausführen nicht reagierende Fehlerbehebung Bei Verwendung der Zeitplanung von Laravel -Zeitplänen werden viele Entwickler auf dieses Problem stoßen: Zeitplan: Run ...

Wie kann man in Laravel mit der Situation umgehen, in der Überprüfungscodes nicht per E -Mail gesendet werden? Wie kann man in Laravel mit der Situation umgehen, in der Überprüfungscodes nicht per E -Mail gesendet werden? Mar 31, 2025 pm 11:48 PM

Die Methode zum Umgang mit Laravels E -Mail -Versagen zum Senden von Verifizierungscode besteht darin, Laravel zu verwenden ...

So implementieren Sie die benutzerdefinierte Tabellenfunktion des Klickens, um Daten im DCAT -Administrator hinzuzufügen? So implementieren Sie die benutzerdefinierte Tabellenfunktion des Klickens, um Daten im DCAT -Administrator hinzuzufügen? Apr 01, 2025 am 07:09 AM

So implementieren Sie die Tabellenfunktion von benutzerdefiniertem Klicken, um Daten in dcatadmin (laravel-admin) hinzuzufügen, wenn Sie DCAT verwenden ...

Laravel – Dump-Server Laravel – Dump-Server Aug 27, 2024 am 10:51 AM

Laravel – Dump-Server – Der Laravel-Dump-Server wird mit der Version von Laravel 5.7 geliefert. Die Vorgängerversionen enthalten keinen Dump-Server. Der Dump-Server wird eine Entwicklungsabhängigkeit in der Laravel-/Laravel-Composer-Datei sein.

Laravel Redis -Verbindungsfreigabe: Warum wirkt sich die Auswahlmethode auf andere Verbindungen aus? Laravel Redis -Verbindungsfreigabe: Warum wirkt sich die Auswahlmethode auf andere Verbindungen aus? Apr 01, 2025 am 07:45 AM

Die Auswirkungen des Austauschs von Redis -Verbindungen im Laravel -Framework und der Auswahl von Methoden bei Verwendung von Laravel -Framework und Redis können Entwickler auf ein Problem stoßen: Durch Konfiguration ...

Laravel Multi-Tenant-Erweiterungsstanz/Mietverhältnis: Wie passen Sie die Host-Adresse einer Mieterdatenbankverbindung an? Laravel Multi-Tenant-Erweiterungsstanz/Mietverhältnis: Wie passen Sie die Host-Adresse einer Mieterdatenbankverbindung an? Apr 01, 2025 am 09:09 AM

Benutzerdefinierte Mieterdatenbankverbindung in Laravel Multi-Tenant-Erweiterungspaket Stanz/Mietverhältnis beim Erstellen von Multi-Mandanten-Anwendungen mit Laravel Multi-Tenant-Erweiterungspaket Stanz/Mietverhältnis, ...

Laravel – Aktions-URL Laravel – Aktions-URL Aug 27, 2024 am 10:51 AM

Laravel – Aktions-URL – Laravel 5.7 führt eine neue Funktion namens „Aufrufbare Aktions-URL“ ein. Diese Funktion ähnelt der in Laravel 5.6, die String-in-Action-Methoden akzeptiert. Der Hauptzweck der neuen Syntax, die Laravel 5.7 eingeführt hat, besteht darin, direktl

See all articles