Laravel 安全:批量赋值 fillable 与 guarded
在Laravel框架中,fillable
和guarded
是用于模型属性的白名单和黑名单设置,用于在批量赋值时确保数据的安全性。
fillable
属性:
当你希望能够批量赋值模型的特定字段时,你可以在模型中设置fillable
属性。例如:
class User extends Model
{
protected $fillable = ['name', 'email', 'password'];
}
guarded
属性:
相反,如果你想要所有字段都可以批量赋值,除了你指定的字段,你可以使用guarded
属性。例如:
class User extends Model
{
protected $guarded = ['password'];
}
在使用fill
方法或者create
方法(需要在模型中使用$fillable
或$guarded
属性)时,只有fillable
属性中的字段才能被批量赋值。如果尝试批量赋值未在fillable
中声明的字段,将会抛出异常。
例如,批量赋值:
$user = User::create([
'name' => 'John Doe',
'email' => 'john@example.com',
'password' => bcrypt('password123')
]);
在这个例子中,因为User
模型只声明了name
、email
和password
在fillable
中,所以这个批量赋值操作是安全的。如果尝试批量赋值其他未在fillable
中声明的字段,将会失败。
评论已关闭