色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Laravel?Eloquent的九個(gè)實(shí)用特性詳解

瀏覽:3日期:2022-06-13 18:38:14
目錄正文1.更強(qiáng)大的 find() 方法2.克隆 Model3.檢查 Model 是否相同4.在關(guān)聯(lián)模型中同時(shí)保存數(shù)據(jù)5.自定義 deleted_at 字段6.獲取已修改的 Model 屬性7.檢查 Model 是否被修改8.獲取 Model 的原始數(shù)據(jù)9.刷新 Model 的數(shù)據(jù)最后正文

對(duì)于使用 Laravel 的開發(fā)者來(lái)說(shuō),可能都會(huì)驚嘆于 Eloquent Model 的強(qiáng)大,但是在強(qiáng)大的表面之下,其實(shí)還是有很多鮮為人知的特性的,本文即來(lái)分享十個(gè) Laravel Eloquent 的強(qiáng)大特性。

1.更強(qiáng)大的 find() 方法

很多開發(fā)者在使用 find() 方法的時(shí)候,通常就只是在這里傳入一個(gè) ID 的參數(shù),其實(shí)我們也是可以傳入第二個(gè)參數(shù)的:在 find() 方法中指定需要查找的字段

$user = App\User::find(1, ['name', 'age']);$user = App\User::findOrFail(1, ['name', 'age']);// 這里面的 name 和 age 字段就是制定只查找這兩個(gè)字段2.克隆 Model

直接使用 replicate() 方法即可,這樣我們就很容易地創(chuàng)建一個(gè) Model 的副本:

$user = App\User::find(1);$newUser = $user->replicate();$newUser->save();// 這樣,$newUser 和 $user 的基本數(shù)據(jù)就是一樣的3.檢查 Model 是否相同

使用 is() 方法檢查兩個(gè) Model 的 ID 是否一致,是否在同一個(gè)表中:

$user = App\User::find(1);$sameUser = App\User::find(1);$diffUser = App\User::find(2);$user->is($sameUser); // true$user->is($diffUser); // false4.在關(guān)聯(lián)模型中同時(shí)保存數(shù)據(jù)

使用 push() 你可以在保存模型數(shù)據(jù)的同時(shí),將所關(guān)聯(lián)的數(shù)據(jù)也保存下來(lái):

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() 會(huì)將 user 的數(shù)據(jù)和 phone 的數(shù)據(jù)同時(shí)更新到數(shù)據(jù)庫(kù)中5.自定義 deleted_at 字段

如果你使用過(guò) Laravel 的軟刪除 Soft Delete 的話,你應(yīng)該就知道其實(shí) Laravel 在標(biāo)記一個(gè)記錄為已刪除的狀態(tài)其實(shí)是用 deleted_at 這個(gè)字段來(lái)維護(hù)的,其實(shí)你是可以自定義這個(gè)字段的:

class User extends Model{ use SoftDeletes; * The name of the 'deleted at' column. * * @var string */ const DELETED_AT = 'deleted_date';}

或者你這樣自定義也可以:

class User extends Model{ use SoftDeletes; public function getDeletedAtColumn() {return 'deleted_date'; }}6.獲取已修改的 Model 屬性

使用 getChanges() 方法獲取已被修改的屬性:

$user->getChanges()//[ 'name' => 'GeiXue', ]7.檢查 Model 是否被修改

使用 isDirty() 方法就可以檢測(cè)模型中的數(shù)據(jù)是否被修改:

$user = App\User::first();$user->isDirty(); //false$user->name = 'GeiXue';$user->isDirty(); //true

在使用 isDirty() 的時(shí)候,你也可以直接檢測(cè)某個(gè)屬性是否被修改:

$user->isDirty('name'); //true$user->isDirty('age'); //false8.獲取 Model 的原始數(shù)據(jù)

在給 Model 的屬性賦予新值的時(shí)候,你可以通過(guò) getOriginal() 來(lái)獲取原來(lái)的值:

$user = App\User::first();$user->name; //JellyBool$user->name = 'GeiXue'; //GeiXue$user->getOriginal('name'); //JellyBool$user->getOriginal(); //Original $user record9.刷新 Model 的數(shù)據(jù)

使用 refresh() 刷新 Model 的數(shù)據(jù),這在你使用 tinker 的時(shí)候特別有用:

$user = App\User::first();$user->name; // JellyBool// 這個(gè)時(shí)候在其他地方,該用戶的名字被更新為 GeiXue,你可以使用 refresh 來(lái)刷新,而不用退出 tinker$user->refresh(); $user->name; // GeiXue最后

上面的九個(gè) Eloquent 特性其實(shí)在特定的應(yīng)用場(chǎng)景是非常有用的,希望能在你開發(fā) Laravel 項(xiàng)目的時(shí)候幫到你一點(diǎn)點(diǎn)。Happy Hacking

以上就是Laravel Eloquent的九個(gè)實(shí)用特性詳解的詳細(xì)內(nèi)容,更多關(guān)于Laravel Eloquent特性的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: PHP
相關(guān)文章:
主站蜘蛛池模板: 久草视频在线资源站 | 久久亚洲国产的中文 | 亚洲第十色 | 亚洲伊人久久综合影院2021 | 日韩一区二区三区四区 | 黄色毛片免费在线观看 | 九九精品视频在线观看九九 | 乱子伦农村xxxx视频 | 国产在线不卡免费播放 | 超清首页 国产 亚洲 丝袜 | 成年人网站免费在线观看 | avtom影院入口永久在线 | 欧美午夜不卡在线观看最新 | 久久久www免费看片 久久久www免费人成看片 | 欧美成人午夜毛片免费影院 | 国产成人精品aaaa视频一区 | 亚洲欧美偷拍自拍 | 韩日一级 | 日韩高清成人毛片不卡 | 日本亚州视频在线八a | 国产一区二区精品久久91 | 美女黄页网 | 一级特黄aa大片欧美 | 国产精品高清视亚洲一区二区 | 久久精品毛片 | 67194国产精品| 手机看a | 2022国产精品网站在线播放 | 免费一级淫片aaa片毛片a级 | 性欧美一级毛片 | 欧美成人精品大片免费流量 | 亚洲免费视频一区 | 蜜桃88av | 美美女高清毛片视频免费观看 | 亚洲六月丁香六月婷婷蜜芽 | 欧美日韩成人 | 欧美黄色xxx | 美女黄页在线观看 | 久久欧美精品欧美久久欧美 | 精品国产一区二区三区不卡蜜臂 | 成人性色大片 |