Laravel 8 批量賦值

2021-07-19 11:29 更新

你也可以使用 create 方法來保存新模型。 此方法會返回模型實例。 不過,在使用之前,你需要在模型上指定 fillableguarded 屬性,因為所有的 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']); 
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號