我正在尝试将客户端的原始文件名保存到我的存储和数据库中。我可以将其保存到存储中。我一直在极度困难的时间内尝试将其正确地放入数据库。我不知道如何解决第二到最后一行代码,以便foreach循环正常工作。
$files = array();
$files = $request->allFiles();
$folder = $id;
if (count($files) > 0) {
foreach ($files as $file) {
//if files should be stored in public drive, change 'local' to 'public'
$filename = $file->getClientOriginalName();
Storage::disk('local')->putFileAs($folder, $file, $file->getClientOriginalName());
$plansubmission-> current_plan_year_claims_data_file_1 = $filename;
$plansubmission->save();
}
}
答案 0 :(得分:1)
假设allFiles
为您提供了一个以输入名称作为键的关联数组,并且您的数据库字段与这些字段名称匹配,则可以迭代该数组并将该键用作模型上的属性名称:< / p>
foreach ($files as $name => $file) {
$filename = $file->getClientOriginalName();
Storage::disk('local')->putFileAs($folder, $file, $filename);
$plansubmission->$name = $filename;
}
$plansubmission->save();
明智的选择是确保输入名称是您期望的3个名称之一,以便仅设置一个实际存在的字段作为表中的字段,而不是一些随机名称(如果用户要以某种方式更改表单。)