Laravel 中的“批量分配”是什么意思?

2023-11-26

当我浏览 Laravel Document 关于 Eloquent ORM 主题部分时,我得到了一个新术语“批量分配”。

文档显示如何进行批量分配以及$fillable or $guarded属性设置。但经历了这些之后,我对“批量分配”以及它是如何运作的并没有清楚的了解。

在我过去使用 CodeIgniter 的经历中,我也没有听说过这个术语。

有人对此有简单的解释吗?


批量分配是指当您将数组发送到模型创建时,基本上是一次性在模型上设置一堆字段,而不是一个一个地设置,如下所示:

$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();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Laravel 中的“批量分配”是什么意思? 的相关文章