Eloquent est le système de classes liées aux tables d'une base de données. Il s'agit d'une couche située entre votre application et votre base de données.
Les classes seront générées à l'aide de la commande php artisan make:model. Chaque classe ainsi générée est une représentation objet d'une table. Et, fait inusité, elle est déjà fonctionnelle même si elle est vide.
Il est possible de compléter les classes afin de répondre à certains besoins. Eloquent propose donc des propriétés et des méthodes pour y parvenir.
Voici quelques propriétés et méthodes Eloquent utiles :
Constante, propriété ou méthode | Utilité | Exemple |
---|---|---|
CREATED_AT |
Nom du champ qui stocke automatiquement la date de création. Si omis, s'appellera created_at. Si on n'a pas de champ pour stocker automatiquement la date de création, on peut initialiser cette constante à null. |
/** |
UPDATED_AT |
Nom du champ qui stocke automatiquement la date de modification. Si omis, s'appellera updated_at. Si on n'a pas de champ pour stocker automatiquement la date de modification, on peut initialiser cette constante à null. |
/** |
DELETED_AT |
Nom du champ qui fait les Soft Deletes. Si omis, s'appellera deleted_at. |
/** |
$table |
Nom de la table associée au modèle. Si omis, le nom de la table sera obtenu en ajoutant un s au nom de la classe converti en lettre minuscules. |
/** |
$primaryKey |
Nom de la clé primaire de la table. Si omis, la clé primaire s'appellera 'id'. |
/**
|
$incrementing |
Indique si la clé primaire doit être auto-incrémentée. Si omis, true. |
/** |
$timestamps |
Indique si la table contient les champs created_at et updated_at qui seront mis à jour automatiquement. Si omis, true. |
/** |
$dateFormat |
Format de stockage des champs de type date du modèle. Détermine comment les attributs seront stockés dans la base de données de même que leur format lorsque le modèle est sérialisé dans un tableau ou au format JSON. |
/** |
$fillable |
Liste de champs pouvant être assignés en lot (mass assignment). Pourront être assignés à l'aide d'une instruction du genre $produit = new Produit($request->all()); ou Produit::create($array); Tous les champs qui ne font pas partie de $fillable seront ignorés lors d'une telle opération. Un modèle peut avoir un champ $fillable ou un champ $guarded mais pas les deux. |
/** |
$guarded |
Liste de champs ne pouvant pas être assignés en lot (mass assignment). Devront être assignés explicitement à l'aide d'une instruction du genre : $objet->champ = $valeur; $objet->save(); Un modèle peut avoir un champ $fillable ou un champ $guarded mais pas les deux. |
/** |
$hidden | Attributs à exclure lors de la sérialisation en tableau ou en JSON pour ce modèle. |
/** |
$dates |
Champs devant être traités comme des instances Carbon. Pourront être traités comme des objets à l'aide d'instructions du genre $uneInstance->champ1->toDateString(); |
/** |
$casts | Attributs nécessitant une conversion de type automatique. |
/** |
$with | Relations à chargement hâtif automatique (eager load). |
/** |
$appends | Accesseur à ajouter automatiquement à la liste des champs du modèle et à sa représentation JSON (model's array form). |
/** |
$perPage | Nombre d'enregistrements à utiliser par défaut lors de la pagination avec ce modèle (si omis : 15) |
/** |
boot() | La méthode de démarrage du modèle. |
/**
ou
protected static function boot( |
$snakeAttributes | Indicates whether attributes are snake cased on arrays. |
/** |
Méthode | Type de relation | Exemple |
---|---|---|
hasMany() | un à plusieurs (côté table principale) |
/** |
belongsTo() |
un à plusieurs (côté table secondaire) ou un à un (côté table secondaire) |
/** |
belongsToMany() | plusieurs à plusieurs |
/** |
hasOne() | un à un (côté table principale) |
/** |
hasManyThrough() | deux relations un à plusieurs enchaînées |
/** |
Par exemple, pour un modificateur de portée permettant de n'avoir que les enregistrements actifs, on pourra retrouver tous les enregistrements actifs à l'aide de : Modele::actif();
La fonction doit s'appeler scope suivi du nom qui sera utilisé dans la requête.
On pourrait utiliser des paramètres en ajoutant un second paramètre dans la déclaration de la fonction (ex : scopeActif($query, $valeur)) et en le passant entre parenthèses lors de l'appel (ex : Modele::actif($valeur);).
Exemple |
---|
/** |
La fonction doit s'appeler get ou set suivi du nom à donner à la propriété puis du mot Attribute.
Sera toujours utilisée comme s'il s'agissait d'une propriété dynamique.
Ex : pour getPrenomNomFamilleAttribute : $usager->prenomNomFamille
Exemple |
---|
/** |
/** |
/** |
/** |
/** |
/** |
/** |
Exemple |
---|
/** |
/** |
/** |
« Model ». Laravel API. https://laravel.com/api/master/Illuminate/Database/Eloquent/Model.html
« framework/src/Illuminate/Database/Eloquent/Model.php ». GitHub. https://github.com/laravel/framework/blob/master/src/Illuminate/Database/Eloquent/Model.php
▼Publicité