Modèles Laravel
Modèles Laravel
-
Objectifs
- Etre capable de créer et de gérer des modèles d’éloquent Laravel
-
Présentation
- L’Eloquent est un ORM (Object Relational Model) inclus avec le Laravel. Il implémente le modèle d’enregistrement actif et est utilisé pour interagir avec des bases de données relationnelles.
- Une fois que vous avez terminé la migration de votre base de données, le processus suivant est l’amorçage. L’éloquent entre en scène puisque l’amorçage insère des enregistrements dans notre base de données.
- Vous devrez donc créer vos modèles avant de pouvoir amorcer la base de données. Chaque table de base de données a un modèle correspondant qui est utilisé pour interagir avec cette table.
- Les modèles vous permettent de rechercher des données dans vos tables, ainsi que d’insérer de nouveaux enregistrements dans la table.
-
Qu’est-ce que le modèle?
- Dans le cadre MVC, la lettre « M » signifie modèle. Les modèles sont des moyens de gérer la logique métier dans toute application basée sur un framework MVC.
- Dans Laravel, Model est une classe qui représente la structure logique et la relation de la table de données sous-jacente.
- Dans Laravel, chaque table de base de données a un « modèle » correspondant qui nous permet d’interagir avec cette table.
- Modèles vous permet de récupérer, d’insérer et de mettre à jour des informations dans votre table de données. Tous les modèles Laravel sont stockés dans le répertoire principal de l’application.
- L’ORM Eloquent inclus avec Laravel fournit un outil simple pour travailler avec la BD. A chaque table dans la BD doit correspondre un Model qui sera utilisé pour interagir avec la table.
-
La migration et la table de base de données ont une forme plurielle telle que les messages , les utilisateurs , etc. tandis que les modèles respectifs ont une forme singulière dans leur nom comme la publication , l’ utilisateur , etc.
-
Créer un modèle
- Tous les Models de l’application Laravel sont stockés dans le dossier App\.
- Le modèle peut être créé simplement en utilisant la commande
make: model artisan
comme suit: - Syntaxe:
php artisan make:model <model-name>
- Remplacez <model-name> par le nom que vous aimez pour le modèle que vous créez. Une fois la commande ci-dessus exécutée, un fichier de classe de modèle avec du code de modèle de base sera créé dans le répertoire App.
-
Activité:
- Ouvrez l’invite de commande et exécutez la commande Artisan suivante:
php artisan make:model etudiants
- Au fur et à mesure de l’exécution de la commande ci-dessus, un modèle sera généré nommé etudiants as app/etudiants.php .
- Ouvrons le fichier de modèle nouvellement généré, à ce stade, votre modèle devrait ressembler à ceci:
- Notez que chaque modèle Eloquent que nous créons étend la classe Illuminate\Database\Eloquent\Model. Nom de la table
- En parlant de migrations, nous pouvons également générer une migration en créant le modèle avec un drapeau optionnel –migrationou –m:
php artisan make:model Voiture --migration
ouphp artisan make:model Voiture -m
-
Les conventions d’Eloquent pour les Models
-
Nom de la table
- Par convention le nom du Model est le singulier du nom de la table qui lui correspond dans la BD.
- La convention est d’utiliser « snake_case » pluralisé pour les noms de tables et « StudlyCase singulier pour les noms de modèles. Par exemple:
- Une table de
cats
aurait un modèleCat
- Une table
jungle_cats
aurait un modèleJungleCat
- Une table d’
users
aurait un modèle d’User
- Une table de
people
aurait un modèlePerson
- Vous pouvez cependant spécifier un nom de table pour remplacer la convention par défaut.
protected $table = 'etudiants';
-
Clé primaire
- Eloquent suppose également que chaque table possède une colonne de clé primaire appelée id.
- Vous pouvez définir une propriété $primaryKey pour remplacer cette convention :
public $primaryKey = 'ncin';
- De plus, Eloquent suppose que la clé primaire est une valeur entière incrémentée, ce qui signifie que, par défaut, la clé primaire sera automatiquement convertie en int.
- Si vous souhaitez utiliser une clé primaire non incrémentée ou non numérique, vous devez définir la propriété publique $incrementing sur votre modèle sur false.
public $incrementing = false ;
-
Timestamps
- Par défaut, Eloquent s’attend à ce que les colonnes created_at et updated_at existent sur vos tables.
- Si vous ne souhaitez pas que ces colonnes soient gérées automatiquement par Eloquent, définissez la propriété $timestamps sur votre modèle sur false:
public $timestamps = false;
-
Application:
- Créer, en utilisant une seule commande, un Model nommé Client ainsi qu’une Migration permettant de créer la table correspondant au Model
- Ajouter, dans la Migration, le code nécessaire permettant de créer la table dans la BD sachant que : clients (id, nom, prenom, dateNaissance, adresse, tel)
- Lancer la commande permettant d’exécuter la Migration.
Eloquent essaiera automatiquement de lier votre modèle avec une table qui a le pluriel du nom du modèle, comme indiqué ci-dessus.