課程
/后端開發
/PHP
/輕松學會Laravel-基礎篇
批量賦值是什么意思呢?
2016-10-29
源自:輕松學會Laravel-基礎篇 6-3
正在回答
學習了
除此之外還可以使用create方法插入數據,由于該方法中用到了批量賦值(Mass Assignment),所以我們需要在模型類中設置$fillable屬性或者$guarded屬性,以表明哪些屬性可以通過該方法設置,哪些不可以。
開始之前,我們先解釋下什么是批量賦值,以及為什么要使用批量賦值。
批量賦值的英文名稱是Mass Assignment,所謂的批量賦值是指當我們將一個數組發送到模型類用于創建新的模型實例的時候(通常是表單請求數據),我們可以簡單通過如下方式實現:
$post = Post::create(Input::all());
而不是像使用save方法那樣一個一個的設置屬性值,如果模型屬性很多的話,使用save簡直是噩夢有木有。
但事物總是相對的,使用批量賦值是很方便,但同時也帶來了安全隱患,很多時候模型類的某些屬性值不是我們所期望通過批量賦值修改的,比如用戶模型有個user_type屬性,如果用戶通過請求數據將其類型修改為管理員類型,這顯然是不允許的,正是基于這一考慮,Eloquent模型類為我們提供了$fillable屬性和$guarded屬性,我們可以將其分別看作“白名單”和“黑名單”,定義在$fillable中的屬性可以通過批量賦值進行賦值,而定義在$guarded中的屬性在批量賦值時會被過濾掉。
那么如果我們確實想要修改定義在$guarded中的屬性怎么辦?答案是使用save方法。
此外需要注意的是$fillable和$guarded方法同時只能定義一個,原因嘛很簡單,非黑即白,定義了一個另外一個也就確定了。
可見批量賦值不僅為我們創建模型提供了便利,還避免了安全隱患,提高了系統的安全性。
舉報
Laravel框架基礎視頻教程,輕松入門,了解Laravel的優勢
1 回答如何使用create一次性大批量的賦值?
1 回答value(?, ?)這個是什么意思
1 回答Route::get('user/{name?}') 中的? 是什么意思
3 回答測試 name 值 怎么會輸出 id 的呢?
1 回答如果where不是一個確切的值,而是一個條件怎么寫呢,例如我不要id=4,而是id>5呢
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2017-06-05
學習了
2016-10-29
除此之外還可以使用create方法插入數據,由于該方法中用到了批量賦值(Mass Assignment),所以我們需要在模型類中設置$fillable屬性或者$guarded屬性,以表明哪些屬性可以通過該方法設置,哪些不可以。
開始之前,我們先解釋下什么是批量賦值,以及為什么要使用批量賦值。
批量賦值的英文名稱是Mass Assignment,所謂的批量賦值是指當我們將一個數組發送到模型類用于創建新的模型實例的時候(通常是表單請求數據),我們可以簡單通過如下方式實現:
$post = Post::create(Input::all());
而不是像使用save方法那樣一個一個的設置屬性值,如果模型屬性很多的話,使用save簡直是噩夢有木有。
但事物總是相對的,使用批量賦值是很方便,但同時也帶來了安全隱患,很多時候模型類的某些屬性值不是我們所期望通過批量賦值修改的,比如用戶模型有個user_type屬性,如果用戶通過請求數據將其類型修改為管理員類型,這顯然是不允許的,正是基于這一考慮,Eloquent模型類為我們提供了$fillable屬性和$guarded屬性,我們可以將其分別看作“白名單”和“黑名單”,定義在$fillable中的屬性可以通過批量賦值進行賦值,而定義在$guarded中的屬性在批量賦值時會被過濾掉。
那么如果我們確實想要修改定義在$guarded中的屬性怎么辦?答案是使用save方法。
此外需要注意的是$fillable和$guarded方法同時只能定義一個,原因嘛很簡單,非黑即白,定義了一個另外一個也就確定了。
可見批量賦值不僅為我們創建模型提供了便利,還避免了安全隱患,提高了系統的安全性。