当我使用密钥' siup'上传文件时,我对Request 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 eloquent update将其插入数据库。
答案 0 :(得分:2)
Request
对象公开的请求数据来自两个不同的来源:查询数据和文件。当您转储请求数据的内容时,它会将这两个源合并在一起,这就是您的输出。
当您使用merge()
,replace()
等方法时,它只会操纵查询数据。因此,即使您尝试覆盖siup
数据,您实际上只会更改查询数据中的siup
密钥。不会触及文件数据中的siup
键。当您再次转储请求数据的内容时,siup
文件数据会覆盖您的siup
查询数据。
如果您只是将数据作为数组获取,那么您将省去很多麻烦,然后根据需要使用该数组。这比试图操纵Request
对象更安全,更容易,而且可能还有很多你应该做的事情。
类似的东西:
$data = $request->except('siup');
$data['siup'] = $myVar;
// now use your data array
MyModel::create($data);