Dans le cadre du développement web avec le framework Laravel, la création de modèles (ou « models » en anglais) est une étape fondamentale pour la gestion des données au sein de l’application. Les modèles agissent comme des représentations des données stockées dans la base de données, et ils permettent d’interagir avec ces données de manière structurée et efficace.
Pour créer un modèle dans Laravel, vous devez suivre quelques étapes simples mais essentielles :

-
Création du modèle : Tout d’abord, vous devez créer un nouveau fichier pour votre modèle. Les modèles Laravel sont généralement placés dans le répertoire
app/Models
, bien que vous puissiez les placer où vous le souhaitez selon votre organisation de projet. Vous pouvez créer un nouveau modèle en utilisant la commande artisanmake:model
de Laravel. Par exemple, pour créer un modèleUser
, vous pouvez exécuter la commande suivante dans votre terminal :bashphp artisan make:model Models\User
Cette commande générera un nouveau fichier
User.php
dans le répertoireapp/Models
. -
Définition des attributs : À l’intérieur du fichier de modèle fraîchement créé, vous devez définir les attributs (ou colonnes) de votre table de base de données. Cela se fait en utilisant les propriétés publiques du modèle, où chaque propriété correspond à une colonne de la table. Par exemple, si votre table
users
comporte des colonnesid
,name
etemail
, votre modèleUser
ressemblera à ceci :phpnamespace App\Models; use Illuminate\Database\Eloquent\Model; class User extends Model { protected $fillable = ['name', 'email']; }
Ici, nous avons défini les colonnes
name
etemail
comme étant « assignables » en masse, ce qui signifie qu’elles peuvent être massivement affectées en utilisant les méthodes telles quecreate()
ouupdate()
. -
Configuration de la table : Par défaut, Laravel suppose que le nom de la table associée au modèle est le nom de la classe, mais en minuscules et pluriel. Donc, dans cet exemple, Laravel recherchera une table appelée
users
. Si votre table a un nom différent, vous pouvez le spécifier en définissant la propriété$table
dans votre modèle :phpprotected $table = 'utilisateurs';
-
Définition des relations (optionnel) : Dans de nombreux cas, les tables de la base de données sont liées les unes aux autres. Les relations entre les modèles sont définies à l’intérieur des modèles eux-mêmes. Laravel prend en charge divers types de relations, notamment les relations « one-to-one », « one-to-many » et « many-to-many ». Par exemple, si un utilisateur a plusieurs articles, vous pouvez définir une relation « one-to-many » dans le modèle
User
:phppublic function articles() { return $this->hasMany(Article::class); }
Cette méthode
articles()
définit une relation où un utilisateur peut avoir plusieurs articles. -
Utilisation du modèle : Une fois votre modèle créé, vous pouvez l’utiliser pour interagir avec les données de la base de données. Vous pouvez créer de nouveaux enregistrements, récupérer des enregistrements existants, les mettre à jour ou les supprimer en utilisant les méthodes fournies par Eloquent, le moteur ORM de Laravel. Par exemple :
php// Création d'un nouvel utilisateur $user = new User(); $user->name = 'John Doe'; $user->email = 'john@example.com'; $user->save(); // Récupération d'un utilisateur par son ID $user = User::find(1); // Mise à jour d'un utilisateur $user->name = 'Jane Doe'; $user->save(); // Suppression d'un utilisateur $user->delete();
Ces exemples illustrent quelques opérations de base que vous pouvez effectuer avec un modèle Laravel.
En résumé, les modèles Laravel fournissent une abstraction puissante pour interagir avec les données de la base de données. En suivant les étapes ci-dessus, vous pouvez créer, configurer et utiliser des modèles dans votre application Laravel pour gérer efficacement les données.
Plus de connaissances
Bien sûr, approfondissons davantage les différentes facettes de la création et de l’utilisation des modèles dans Laravel.
1. Mass Assignment :
Laravel propose une fonctionnalité appelée « Mass Assignment » qui permet de définir les attributs pouvant être massivement assignés. Cela est utile lors de la création ou de la mise à jour de plusieurs enregistrements à la fois. Vous pouvez spécifier les attributs autorisés en utilisant la propriété $fillable
dans votre modèle, comme illustré précédemment.
En plus de $fillable
, il existe une autre propriété appelée $guarded
, qui est utilisée pour indiquer les attributs qui ne doivent pas être massivement assignés. Si vous utilisez $guarded
, tous les attributs sont protégés sauf ceux spécifiés dans la propriété $guarded
.
2. Accesseurs et Mutateurs :
Les accesseurs et les mutateurs sont des méthodes définies dans les modèles Laravel qui permettent de manipuler les valeurs des attributs avant qu’elles ne soient stockées dans la base de données (mutateurs) ou lorsqu’elles sont récupérées de la base de données (accesseurs).
Par exemple, vous pouvez utiliser un mutateur pour formater une valeur avant de l’enregistrer dans la base de données, comme convertir un champ de date en un format spécifique. De même, un accesseur peut être utilisé pour modifier la façon dont une valeur est récupérée d’une base de données avant d’être utilisée dans l’application.
3. Validation des Données :
Laravel propose un moyen élégant de valider les données avant de les enregistrer dans la base de données. Vous pouvez définir les règles de validation pour chaque attribut dans la méthode rules()
du modèle. Ces règles seront appliquées automatiquement lors de l’utilisation des méthodes telles que create()
ou update()
. Par exemple :
phppublic static $rules = [
'name' => 'required|string|max:255',
'email' => 'required|email|unique:users,email',
];
// Utilisation
Validator::make($request->all(), User::$rules)->validate();
4. Événements de Modèle :
Laravel fournit des événements de modèle qui vous permettent de surveiller les actions effectuées sur un modèle, telles que la création, la mise à jour ou la suppression. Vous pouvez attacher des écouteurs à ces événements pour exécuter du code personnalisé lorsqu’une action particulière est déclenchée. Par exemple :
phpprotected static function boot()
{
parent::boot();
static::creating(function ($user) {
// Code à exécuter lors de la création d'un nouvel utilisateur
});
static::updating(function ($user) {
// Code à exécuter lors de la mise à jour d'un utilisateur
});
static::deleting(function ($user) {
// Code à exécuter lors de la suppression d'un utilisateur
});
}
5. Gestion des Dates :
Laravel facilite la gestion des dates dans les modèles. Vous pouvez spécifier les attributs de votre modèle qui doivent être traités comme des objets DateTime
en utilisant la propriété $dates
. Cela permet à Laravel de convertir automatiquement les valeurs de ces attributs en objets DateTime
lorsqu’ils sont récupérés de la base de données, et vice versa lorsqu’ils sont enregistrés.
6. Jointures et Chargement Précoce :
Laravel propose une syntaxe expressive pour effectuer des jointures entre les tables de base de données. Vous pouvez également charger préalablement des relations pour éviter les requêtes supplémentaires à la base de données. Par exemple :
php// Jointure
$users = User::join('posts', 'users.id', '=', 'posts.user_id')
->get();
// Chargement précoce des relations
$users = User::with('posts')->get();
Cela permet d’améliorer les performances de votre application en réduisant le nombre de requêtes à la base de données.
En conclusion, les modèles dans Laravel offrent un moyen puissant et intuitif de gérer les données de votre application. En combinant les fonctionnalités telles que la mass assignment, les accesseurs et mutateurs, la validation des données, les événements de modèle et la gestion des dates, vous pouvez construire des applications web robustes et faciles à maintenir.