批量分配是指当您将数组发送到模型创建时,基本上是一次性在模型上设置一堆字段,而不是一个一个地设置,如下所示:
$user = new User(request()->all());
(这不是单独显式设置模型上的每个值。)
您可以使用fillable
以保护您希望其实际允许更新的字段。
您还可以通过执行以下操作来阻止所有字段可批量分配:
protected $guarded = ['*'];
假设您的用户表中有一个字段是user_type
并且可以具有 user / admin 的值
显然,您不希望用户能够更新该值。理论上,如果您使用上面的代码,有人可以在表单中注入一个新字段user_type
并将“admin”与其他表单数据一起发送,并轻松将其帐户切换到管理员帐户......坏消息。
通过增加:
$fillable = ['name', 'password', 'email'];
您确保只有这些值可以使用更新mass assignment
为了能够更新user_type
值,您需要在模型上显式设置它并保存它,如下所示:
$user->user_type = 'admin';
$user->save();