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

您的位置:首頁技術文章
文章詳情頁

Laravel?Eloquent的九個實用特性詳解

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

對于使用 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 字段就是制定只查找這兩個字段2.克隆 Model

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

$user = App\User::find(1);$newUser = $user->replicate();$newUser->save();// 這樣,$newUser 和 $user 的基本數據就是一樣的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); // false4.在關聯模型中同時保存數據

使用 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.自定義 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';}

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

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

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

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

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

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

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

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

在給 Model 的屬性賦予新值的時候,你可以通過 getOriginal() 來獲取原來的值:

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

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

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

上面的九個 Eloquent 特性其實在特定的應用場景是非常有用的,希望能在你開發 Laravel 項目的時候幫到你一點點。Happy Hacking

以上就是Laravel Eloquent的九個實用特性詳解的詳細內容,更多關于Laravel Eloquent特性的資料請關注好吧啦網其它相關文章!

標簽: PHP
相關文章:
主站蜘蛛池模板: 韩国一级特黄毛片大 | 久久精品系列 | 久草资源福利 | 91精品免费看 | 免费岛国小视频在线观看 | 九九九九热精品视频 | 国产欧美精品一区二区三区四区 | 女高中生被cao到哭视频 | 成人精品视频网站 | 亚洲一区二区精品视频 | 夜夜躁狠狠躁日日躁2021 | 国产看午夜精品理论片 | 亚洲人的天堂男人爽爽爽 | 曰本人做爰大片免费观看一 | 亚洲图片一区二区三区 | 亚洲精品国产精品精 | 欧美另类在线视频 | 亚洲天堂在线观看视频 | 欧美成人 一区二区三区 | 欧美俄罗斯一级毛片 | 免费国产a国产片高清 | 日a在线| 天天黄色片 | 97视频免费观看 | 永久免费观看午夜视频在线 | 国产成人mv 在线播放 | 精品一区二区三区四区在线 | 欧美日韩亚洲国产 | 国产伦精品一区二区三区网站 | 国产成人18黄网站免费 | 成年人在线观看视频免费 | 亚洲第十色| 欧美成人午夜片一一在线观看 | 一区二区中文字幕在线观看 | 国产亚洲欧美日韩在线看片 | 欧美日韩在线第一页 | 2022国内精品免费福利视频 | 欧美午夜免费毛片a级 | 国产年成美女网站视频免费看 | 日韩精品一区二区三区乱码 | 国产短视频精品一区二区三区 |