Maison> cadre php> Laravel> le corps du texte

介绍9个有用的Laravel Eloquent的特性

藏色散人
Libérer: 2021-03-17 09:12:13
avant
2056 Les gens l'ont consulté

下面由laravel教程栏目给大家介绍分享九个有用的 Laravel Eloquent 的特性,希望对需要的朋友有所帮助!

介绍9个有用的Laravel Eloquent的特性

九个有用的 Laravel Eloquent 的特性

对于使用 Laravel 的开发者来说,可能都会惊叹于 Eloquent Model 的强大,但是在强大的表面之下,其实还是有很多鲜为人知的特性的,本文即来分享十个 Laravel Eloquent 的强大特性。

1.更强大的 find() 方法
很多开发者在使用find()方法的时候,通常就只是在这里传入一个 ID 的参数,其实我们也是可以传入第二个参数的:find()方法中指定需要查找的字段

$user = App\User::find(1, ['name', 'age']); $user = App\User::findOrFail(1, ['name', 'age']); // 这里面的 name 和 age 字段就是制定只查找这两个字段
Copier après la connexion

2.克隆 Model
直接使用replicate()方法即可,这样我们就很容易地创建一个 Model 的副本:

$user = App\User::find(1); $newUser = $user->replicate(); $newUser->save(); // 这样,$newUser 和 $user 的基本数据就是一样的
Copier après la connexion

3.检查 Model 是否相同
使用is()方法检查两个 Model 的 ID 是否一致,是否在同一个表中:

$user = App\User::find(1); $sameUser = App\User::find(1); $diffUser = App\User::find(2); $user->is($sameUser); // true $user->is($diffUser); // false
Copier après la connexion

4.在关联模型中同时保存数据
使用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 的数据同时更新到数据库中
Copier après la connexion

5.自定义 deleted_at 字段
如果你使用过 Laravel 的软删除 Soft Delete 的话,你应该就知道其实 Laravel 在标记一个记录为已删除的状态其实是用deleted_at这个字段来维护的,其实你是可以自定义这个字段的:

class User extends Model { use SoftDeletes; * The name of the "deleted at" column. * * @var string */ const DELETED_AT = 'deleted_date'; }
Copier après la connexion

或者你这样自定义也可以:

class User extends Model { use SoftDeletes; public function getDeletedAtColumn() { return 'deleted_date'; } }
Copier après la connexion

6.获取已修改的 Model 属性
使用getChanges()方法获取已被修改的属性:

$user->getChanges() //[ "name" => "GeiXue", ]
Copier après la connexion

7.检查 Model 是否被修改
使用isDirty()方法就可以检测模型中的数据是否被修改:

$user = App\User::first(); $user->isDirty(); //false $user->name = "GeiXue"; $user->isDirty(); //true
Copier après la connexion

在使用isDirty()的时候,你也可以直接检测某个属性是否被修改:

$user->isDirty('name'); //true $user->isDirty('age'); //false
Copier après la connexion

8.获取 Model 的原始数据
在给 Model 的属性赋予新值的时候,你可以通过getOriginal()来获取原来的值:

$user = App\User::first(); $user->name; //JellyBool $user->name = "GeiXue"; //GeiXue $user->getOriginal('name'); //JellyBool $user->getOriginal(); //Original $user record
Copier après la connexion

9.刷新 Model 的数据
使用refresh()刷新 Model 的数据,这在你使用tinker的时候特别有用:

$user = App\User::first(); $user->name; // JellyBool // 这个时候在其他地方,该用户的名字被更新为 GeiXue,你可以使用 refresh 来刷新,而不用退出 tinker $user->refresh(); $user->name; // GeiXue
Copier après la connexion

最后
上面的九个 Eloquent 特性其实在特定的应用场景是非常有用的,希望能在你开发 Laravel 项目的时候帮到你一点点。

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!

Étiquettes associées:
source:segmentfault.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!