拉拉维尔请求文件更改


Laravel Request File Change

当我上传带有密钥"siup"的文件时,我遇到了请求Laravel的问题,请求数据显示如下:

"_token" => "Ab9zfuQn0rb0exCx7IdMcnAxQWi4iqWcfcDy319B"
"_method" => "PUT"
"first_name" => "first"
"last_name" => "aaa"
"email" => "black.y_+ta@email.com"
"province" => "11"
"city_id" => "38"
"address" => "asdasd"
"phone" => "1234567890"
"company_type" => "koperasi"
"company_name" => "qqq"
"company_address" => "qqq"
"pic" => "qqqa"
"position" => "qqq"
"siup" => UploadedFile {#30 ▶}

我想对请求响应执行此操作

$request->merge(['siup'=>$myVar]);

但键SIUP没有改变。 我想更改SIUP值以将其插入到具有Laravel雄辩更新的数据库中。

Request对象公开的请求数据来自两个不同的源:查询数据和文件。当您转储请求数据的内容时,它会将这两个源合并在一起,这就是您的输出。

当您使用 merge()replace() 等方法时,它只是操作查询数据。因此,即使您尝试覆盖siup数据,实际上也只是更改查询数据中的siup键。不会触及文件数据中的siup键。再次转储请求数据的内容时,siup文件数据将覆盖siup查询数据。

如果您只是将数据作为数组获取,然后根据需要使用数组,您将省去很多麻烦。这比尝试操作Request对象更安全、更容易,而且可能更符合您应该做的事情。

像这样:

$data = $request->except('siup');
$data['siup'] = $myVar;
// now use your data array
MyModel::create($data);