W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
你也可以使用 create
方法來保存新模型。 此方法會返回模型實例。 不過,在使用之前,你需要在模型上指定 fillable
或 guarded
屬性,因為所有的 Eloquent 模型都默認不可進行批量賦值。
當(dāng)用戶通過請求傳入意外的 HTTP 參數(shù),并且該參數(shù)更改了數(shù)據(jù)庫中你不需要更改的字段時,就會發(fā)生批量賦值漏洞。 比如:惡意用戶可能會通過 HTTP 請求傳入 is_admin
參數(shù),然后將其傳給 create
方法,此操作能讓用戶將自己升級成管理員。
所以,在開始之前,你應(yīng)該定義好模型上的哪些屬性是可以被批量賦值的。你可以通過模型上的 $fillable
屬性來實現(xiàn)。 例如:讓 Flight
模型的 name
屬性可以被批量賦值:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Flight extends Model
{
/**
* 可批量賦值屬性
*
* @var array
*/
protected $fillable = ['name'];
}
一旦我們設(shè)置好了可以批量賦值的屬性,就可以通過 create
方法插入新數(shù)據(jù)到數(shù)據(jù)庫中了。 create
方法將返回保存的模型實例:
$flight = App\Models\Flight::create(['name' => 'Flight 10']);
如果你已經(jīng)有一個模型實例,你可以傳遞一個數(shù)組給 fill
方法來賦值:
$flight->fill(['name' => 'Flight 22']);
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: