当我使用 key “siup”上传文件时,Request Laravel 遇到问题,请求数据如下所示:
"_token" => "Ab9zfuQn0rb0exCx7IdMcnAxQWi4iqWcfcDy319B"
"_method" => "PUT"
"first_name" => "first"
"last_name" => "aaa"
"email" => "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="c0a2aca1a3abeeb99febb4a180a5ada1a9aceea3afad" rel="noreferrer noopener nofollow">[email protected]</a>"
"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]);
但是 key siup没有改变。我想更改 siup 值以使用 laravel eloquent update 将其插入数据库。
最佳答案
Request
对象公开的请求数据来自两个不同的来源:查询数据和文件。当您转储请求数据的内容时,它将这两个源合并在一起,这就是您的输出。
当您使用merge()
、replace()
等方法时,它只是操作查询数据。因此,即使您尝试覆盖 siup
数据,实际上也只是更改查询数据中的 siup
键。文件数据中的siup
键未被触及。当您再次转储请求数据的内容时,siup
文件数据将覆盖您的 siup
查询数据。
如果您只是将数据作为数组获取,然后根据需要使用该数组,您会省去很多麻烦。这比尝试操作 Request
对象更安全、更容易,并且可能更符合您应该做的事情。
类似于:
$data = $request->except('siup');
$data['siup'] = $myVar;
// now use your data array
MyModel::create($data);
关于php - Laravel 请求文件更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36051646/