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