当我翻阅拉威尔关于Eloquent 的ORM主题部分的文件时,我得到了一个新术语"大规模作业(job)".
文档显示如何进行质量分配以及$fillable
或$guarded
属性设置.但在经历了这些之后,我对"大规模作业(job)"及其工作原理没有一个清晰的理解.
在我过go 使用CodeIgniter的经验中,我也没有听说过这个术语.
有人对此有简单的解释吗?
当我翻阅拉威尔关于Eloquent 的ORM主题部分的文件时,我得到了一个新术语"大规模作业(job)".
文档显示如何进行质量分配以及$fillable
或$guarded
属性设置.但在经历了这些之后,我对"大规模作业(job)"及其工作原理没有一个清晰的理解.
在我过go 使用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();