当我翻阅拉威尔关于Eloquent 的ORM主题部分的文件时,我得到了一个新术语"大规模作业(job)".

文档显示如何进行质量分配以及$fillable$guarded属性设置.但在经历了这些之后,我对"大规模作业(job)"及其工作原理没有一个清晰的理解.

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

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

推荐答案

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

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

(这不是在模型上分别显式设置每个值.)

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

通过执行以下操作,您还可以挡路所有字段,使其不再是可批量分配的字段:

protected $guarded = ['*'];

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

显然,您不希望用户能够更新此值.理论上,如果你使用上面的代码,有人可以在表单中插入一个新的字段user_type,并发送"admin"和其他表单数据,然后轻松地将他们的帐户切换到admin帐户...坏消息.

加入:

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

您正在确保只能使用mass assignment更新这些值

要更新user_type值,需要在模型上显式设置并保存,如下所示:

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

Php相关问答推荐

正则表达式

数组洗牌和undo撤消

Laravel Rest API 的子域无法正常工作 - IONOS 使用 Plesk

为准备好的语句动态生成类型定义字符串

仅在第一个轮播单元格上添加课程(轻弹)

PHP - 获取当前进程的打开文件数量

codeigniter 4 mysql 查询 distinct 或 groupby

在Laravel代码中定义数据库中字段的值,以使代码更具可读性

laravel Passport 身份验证代码 - 要求授予权限,是否需要?

在第一个不是价格小数点或字符串最后一个字符的句点处拆分字符串

是什么导致我的 Laravel 8 应用程序中出现此查询生成器错误?

如何判断返回的集合关系中是否存在变量

Docker & Laravel:配置:错误:未满足包要求(oniguruma)

如何测试字符串是否包含 PHPUnit 中的另一个字符串?

如何在 docker 容器中安装 PHP composer

Laravel 5.5 ajax 调用 419(未知状态)

Laravel:语法错误或访问冲突:1055 错误

如何在 Laravel 中验证数组?

使用 Postman 通过原始 JSON 发送 POST 数据

如何在 laravel 5 中使用 Storage 门面获取文件 URL?