laravel通过大规模任务安全地工作

时间:2015-03-01 00:13:18

标签: php laravel eloquent models laravel-5

我设置了我的laravel模型保护数组属性,现在我无法设置

Model::create(['gaurded_field' => 'value']);

但是如何安全地插入它,只有首先想到的选项是先创建,然后执行:

$model_object = Model::create(['other_attributes' => 'other_values']);
$model_object->gaurded_field = 'value';
$model_object->save();

但是这只需要2个数据库查询,1个插入1更新,我可以在1个查询中设置它们吗?

1 个答案:

答案 0 :(得分:2)

你能做的是:

$model_object = Model::fill(['other_attributes' => 'other_values']);    
$model_object->guarded_field = 'value'; 
$model_object->save();

修改

还有一件事。如果在使用存储/更新时处理代码中的属性,您可以安全地将其添加到可填充属性中(您不需要在保护中使用它。

$input = $request->input();
$input['guarded_field'] = 'value';
$model_object = Model::create($input);

通过这种方式,您可以安全地将此guarded_field添加到可填写字段,因为在您的代码中,您始终会使用您的值覆盖它。因此,无论用户发送什么,您都将始终设置自己的价值。当然,您需要对更新执行相同操作(或者如果您不想进行任何更改,则只需更新用户值以进行更新)。有时它可能很方便但你需要非常小心这种技术。