国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

Laravel中批量賦值Mass-Assignment的真正含義詳解

2024-05-05 00:00:18
字體:
來源:轉載
供稿:網友

前言

很多人初次遇到 批量賦值 的時候,很容易理解成 批量添加多條數據,實際并非如此。下面話不多說了,請看下面的例子。

假設用戶表 users 結構如下,且通過 is_admin 字段值為 1 或 0 來判斷用戶是否為 管理員,其中 is_admin 字段默認值為 0:

+----+-----------+------------------+----------+--------------------------------------------------------------+| id | name  | email   | is_admin | password              |+----+-----------+------------------+----------+--------------------------------------------------------------+| 1 | seekerliu | me@seekerliu.com |  1 | $2y$10$RL6r.MwoJd.oOvKRYhUpmeQI6hUpoG/KgGNhA6X5JrRqfVbooCs92 |+----+-----------+------------------+----------+--------------------------------------------------------------+

正常情況下,我們通過這種方式新建一個 普通 用戶:

public function store (Request $request){ $user = new /App/User;   // 賦值 $user->name = $request->name; $user->email = $request->email; $user->password = bcrypt($request->password);   // 新建一個用戶 $user->save();}

為了方便,我們可以使用 $request->all() 獲取用戶提交的所有表單數據:

public function store (Request $request){ $user = new /App/User;   // Mass-Assignment 批量賦值 $data = $request->all();    // 新建一個用戶 $user->create($data);}

這種情況下,如果用戶提交正確的表單數據,例如: ['name' => 'liu', 'email' => 'liu@seekerliu.com', 'password' => 'test'] ,會新建一個 普通 用戶。

但只要用戶在表單中偽造一個 ['is_admin' => 1] 字段,就能新建一個 管理員 用戶。

這種通過將一大堆數據同時傳遞給模型的 create() 方法來新建一行的方式就是 Mass-Assignment (批量賦值) 。

Laravel 提供了保護 Mass-Assignment 的方法,那就是在模型上定義 fillable 或 guarded 的屬性,例如:

class User extend Model{ protected $fillable = ['name', 'email', 'password'];}

或:

class User extend Model{ protected $guarded = ['is_admin'];}

這樣,在執行 create() 方法時,Eloquent 模型會先使用 fill() 方法對數據進行過濾,去掉 $fillable 以外的字段(白名單),或去掉 $guarded 中的字段(黑名單),來保證只獲取預期的表單字段。

以上就是 Laravel 的 Mass-Assignment 。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VeVb武林網的支持。


注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 南皮县| 正阳县| 五大连池市| 抚松县| 咸宁市| 文昌市| 汉源县| 张掖市| 达尔| 房山区| 沐川县| 岳普湖县| 中山市| 盐津县| 独山县| 亚东县| 金坛市| 肇源县| 临江市| 门头沟区| 仁化县| 米林县| 阳城县| 搜索| 米脂县| 葫芦岛市| 天祝| 衡阳县| 两当县| 安多县| 湟中县| 江油市| 施甸县| 疏勒县| 正安县| 双牌县| 明星| 呼伦贝尔市| 梧州市| 娱乐| 板桥市|