Heim > PHP-Framework > Laravel > Hauptteil

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

WBOY
Freigeben: 2023-06-14 08:21:39
Original
1479 Leute haben es durchsucht

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!

Verwandte Etiketten:
Quelle:php.cn
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage