Développement Laravel : Comment construire un modèle de base de données à l'aide de Laravel Eloquent ?
Laravel est un framework PHP populaire qui fournit un outil d'exploitation de base de données puissant et facile à utiliser - Laravel Eloquent. Dans le passé, l'utilisation de PHP pour effectuer des opérations de base de données nécessitait inévitablement l'écriture d'un grand nombre d'instructions SQL longues et de codes fastidieux. Cependant, l'utilisation de Laravel Eloquent peut facilement créer des modèles de base de données et réaliser un développement et une maintenance rapides. Cet article explique comment utiliser Laravel Eloquent pour créer un modèle de base de données.
1. Créer des tables de base de données
Tout d'abord, vous devez créer des tables de base de données via la migration de la base de données (Migration). Dans Laravel, ce processus peut être réalisé à l'aide de l'outil de ligne de commande artisan. Entrez :
php artisan make:migration create_users_table
Cette commande créera un fichier de migration dans le répertoire app/database/migrations. Le nom du fichier est la date et l'heure actuelles ainsi que le nom de la migration, par exemple 2019_08_17_000000_create_users_table.php. Modifiez le fichier de migration et écrivez la structure de base de données correspondante.
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(); });
Le code ci-dessus crée une table nommée utilisateurs, qui contient 8 champs : identifiant, nom, email, email_verified_at, mot de passe, Remember_token, Create_at et Update_at. Ensuite, exécutez le fichier de migration pour créer les tables de base de données.
php artisan migrate
2. Créer un modèle
Créer un modèle (Modèle) dans l'application est la première étape de l'utilisation de Laravel Eloquent. Vous pouvez créer un modèle via l'outil artisanal :
php artisan make:model User
La commande ci-dessus créera un modèle nommé User dans le répertoire de l'application, qui correspond à la table des utilisateurs dans la base de données. Par défaut, Laravel Eloquent suppose que le nom de la table de base de données est le pluriel du nom du modèle. Si vous devez correspondre à un nom de table différent ou utiliser une connexion à la base de données différente, vous pouvez définir les attributs $table et $connection dans le modèle. .
La définition du modèle est la suivante :
namespace App; use IlluminateDatabaseEloquentModel; class User extends Model { // }
3. Attributs du modèle
Dans le modèle, Laravel Eloquent a défini certains attributs et méthodes par défaut, notamment :
protected $fillable = [ 'name', 'email', 'password', ];
protected $hidden = [ 'password', 'remember_token', ];
protected $casts = [ 'email_verified_at' => 'datetime', ];
4. Méthodes du modèle
Laravel Eloquent fournit quelques méthodes pour effectuer des opérations sur les données dans le modèle. Voici quelques-unes des méthodes de modèle les plus courantes :
$user = User::where('name', 'John')->first();
$user_id = 1; $user = User::find($user_id);
$user = User::where('name', 'John')->first();
$users = User::all();
User::create(['name' => 'Taylor', 'email' => 'taylor@example.com', 'password' => 'password']);
$user = User::find($user_id); $user->name = 'Updated Name'; $user->save();
$user = User::find($user_id); $user->delete();
Ci-dessus sont quelques méthodes de base du modèle Laravel Eloquent, qui peuvent rapidement implémenter des opérations d'ajout, de suppression, de modification et d'interrogation sur la base de données.
5. Relations d'association
Laravel Eloquent fournit également un moyen pratique de définir diverses relations : un à un, un à plusieurs, plusieurs à plusieurs) et des relations polymorphes. Voici quelques exemples :
Dans une association un-à-un, chaque instance de modèle n'est associée qu'à une autre instance de modèle associée. Par exemple, chaque ligne de la table des utilisateurs peut être associée à une ligne de la table des téléphones, qui stocke le numéro de téléphone de l'utilisateur. Dans le modèle User, définissez une méthode phone() pour représenter la relation un-à-un entre le modèle et le modèle de téléphone.
class User extends Model { public function phone() { return $this->hasOne('AppPhone'); } }
Dans le modèle Phone, définissez la méthode hasOne() opposée.
class Phone extends Model { public function user() { return $this->belongsTo('AppUser'); } }
Dans une relation un-à-plusieurs, une instance de modèle est associée à une autre instance de modèle, et une autre instance peut être associée à plusieurs instances de modèle. Par exemple, dans un site de forum, chaque modèle peut être associé à de nombreux commentaires. Dans le modèle Thread, définissez une méthode comments() pour représenter la relation un-à-plusieurs entre le modèle et le modèle Comment.
class Thread extends Model { public function comments() { return $this->hasMany('AppComment'); } }
Dans le modèle Comment, définissez la méthode AppartientTo() opposée.
class Comment extends Model { public function thread() { return $this->belongsTo('AppThread'); } }
Dans une relation plusieurs-à-plusieurs, l'instance de modèle est associée à de nombreuses autres instances de modèle, et chaque instance de modèle associée peut également être associée à plusieurs instances de modèle. Par exemple, dans un blog, chaque article peut avoir plusieurs balises de catégorie, et chaque balise peut également contenir plusieurs articles. Dans le modèle Post, définissez une méthode tags() pour représenter la relation plusieurs-à-plusieurs entre le modèle et le modèle Tag.
class Post extends Model { public function tags() { return $this->belongsToMany('AppTag'); } }
Dans le modèle Tag, définissez la méthode à l'opposé appartientToMany().
class Tag extends Model { public function posts() { return $this->belongsToMany('AppPost'); } }
多态关联允许模型通过多个中介模型与其他模型进行多对多关联。例如,在应用中可以使用comments模型对其他类型的模型进行评论。在Comment模型中,定义一个commentable()方法,表示该模型与所有支持评论的模型之间的多态关系。
class Comment extends Model { public function commentable() { return $this->morphTo(); } }
在支持评论的模型中,例如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'); } }
以上是Laravel Eloquent提供的关联关系,可以让开发者在数据库模型中轻松处理复杂的关系结构。
七、总结
本文介绍了使用Laravel Eloquent构建数据库模型的基础知识,包括创建数据库表、创建模型、模型属性和方法,以及关联关系。Laravel Eloquent提供了一种简单和直观的方式来操作数据库,使得开发者能够快速构建应用程序,并为复杂的数据库结构提供了更干净、易于维护的解决方案。希望这篇文章对你的学习和开发有所帮助。
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!