php - "Mass Assignment"在 Laravel 中是什么意思?

标签 php laravel eloquent mass-assignment

当我浏览 Laravel Document about Eloquent ORM topic part时,我得到了一个新术语“Mass Assignment”。

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

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

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

最佳答案

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

$user = new User(request()->all());

(这不是在模型上单独显式设置每个值。)

您可以使用 fillable 来保护您希望它实际允许更新的字段。

您还可以通过执行以下操作阻止所有字段可批量分配:

protected $guarded = ['*'];

假设在您的用户表中,您有一个字段是 user_type 并且可以具有 user/admin 的值

显然,您不希望用户能够更新此值。理论上,如果您使用上面的代码,有人可以为 user_type 注入(inject)一个新字段并将“admin”与其他表单数据一起发送,然后轻松地将他们的帐户切换为管理员帐户。 .. 坏消息。

通过添加:

$fillable = ['name', 'password', 'email'];

您确保只有那些值可以使用 mass assignment

进行更新

为了能够更新 user_type 值,您需要在模型上显式设置并保存它,如下所示:

$user->user_type = 'admin';
$user->save();

关于php - "Mass Assignment"在 Laravel 中是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22279435/

相关文章:

php - 使用 Javascript 安全地查询 Solr

php - 将 PHP 编译为静态二进制文件

ubuntu - php-fpm 在 ubuntu 上正常运行需要哪些系统文件在 jailed 环境中?

arrays - 在 Laravel 应用程序的数据库中存储数组或 std 对象

php - laravel Eloquent 一对一保存关系

php - 手动创建一个空的 PDO 记录集

reactjs - 我如何将 react 添加到我的 laravel 项目?

Laravel 在提交包含图像和数据的表单时显示必需的错误消息

javascript - ReactJS 设置状态不会从 Axios 响应数据分配数组

php - Laravel - 查询构建器中同一个表的两个或多个别名