Pour les développeurs qui utilisent Laravel, ils pourraient être surpris Bien que le modèle Eloquent est puissant, il existe encore de nombreuses fonctionnalités peu connues sous la surface puissante. Cet article partagera dix fonctionnalités puissantes de Laravel Eloquent.
1. Méthode find() plus puissante
Lorsque de nombreux développeurs utilisent la méthode find()
, ils transmettent généralement simplement un paramètre ID ici. passez le deuxième paramètre : Spécifiez le champ que vous souhaitez retrouver dans la find()
méthode
$user = App\User::find(1, ['name', 'age']); $user = App\User::findOrFail(1, ['name', 'age']); // 这里面的 name 和 age 字段就是制定只查找这两个字段
2 Clone Model
et utilisez-le directement<.> méthode, afin que nous puissions facilement créer une copie du modèle : replicate()
$user = App\User::find(1); $newUser = $user->replicate(); $newUser->save(); // 这样,$newUser 和 $user 的基本数据就是一样的
3 Vérifiez si le modèle est le même Utilisez la méthode
pour vérifier les deux. Modèles Si les identifiants sont cohérents et dans le même tableau : is()
$user = App\User::find(1); $sameUser = App\User::find(1); $diffUser = App\User::find(2); $user->is($sameUser); // true $user->is($diffUser); // false
4. Enregistrez les données dans le modèle associé en même temps Utilisez
Vous pouvez enregistrer les données du modèle. en même temps Les données associées sont également enregistrées : push()
class User extends Model { public function phone() { return $this->hasOne('App\Phone'); } } $user = User::first(); $user->name = "GeiXue"; $user->phone->number = '1234567890'; $user->push(); // 最后这一行 push() 会将 user 的数据和 phone 的数据同时更新到数据库中
5. Personnalisez le champ delete_at Si vous avez utilisé la suppression logicielle de Laravel, sachez que Laravel marque en fait The. le statut d'un enregistrement comme supprimé est en fait conservé à l'aide du champ
En fait, vous pouvez personnaliser ce champ : deleted_at
class User extends Model { use SoftDeletes; * The name of the "deleted at" column. * * @var string */ const DELETED_AT = 'deleted_date'; }ou vous pouvez le personnaliser comme ceci :
class User extends Model { use SoftDeletes; public function getDeletedAtColumn() { return 'deleted_date'; } }
. 6. Obtenez les attributs du modèle modifiésUtilisez la méthode
pour obtenir les attributs modifiés : getChanges()
$user->getChanges() //[ "name" => "GeiXue", ]
7. Vérifiez si le modèle a été modifié Utilisez la méthode
pour détecter si les données du modèle ont été modifiées : isDirty()
$user = App\User::first(); $user->isDirty(); //false $user->name = "GeiXue"; $user->isDirty(); //trueLors de l'utilisation de
, vous pouvez également détecter directement si un attribut a été modifié : isDirty()
$user->isDirty('name'); //true $user->isDirty('age'); //false
8. Obtenez les données originales du modèle Lors de l'attribution de nouvelles valeurs aux attributs du modèle, vous pouvez obtenir les valeurs originales via
: getOriginal()
$user = App\User::first(); $user->name; //JellyBool $user->name = "GeiXue"; //GeiXue $user->getOriginal('name'); //JellyBool $user->getOriginal(); //Original $user record
9. Actualiser les données du modèle Utilisez
pour actualiser les données du modèle Ceci est particulièrement utile lorsque vous utilisez refresh()
: tinker
$user = App\User::first(); $user->name; // JellyBool // 这个时候在其他地方,该用户的名字被更新为 GeiXue,你可以使用 refresh 来刷新,而不用退出 tinker $user->refresh(); $user->name; // GeiXue
Enfin <.>Les neuf fonctionnalités Eloquent ci-dessus sont en fait très utiles dans des scénarios d'application spécifiques. J'espère qu'elles pourront vous aider un peu lorsque vous développez des projets Laravel.