我想插入具有相同输入"名称"的数据。 例如
{!! Form::open(['action' => 'PageController@store', 'method' => 'POST', 'enctype' => 'multipart/form-data']) !!}
<input type="text" class="form-control" name="name[]" placeholder="Name">
<input type="file" class="form-control-file" name="img[]">
<input type="text" class="form-control" name="name[]" placeholder="Name">
<input type="file" class="form-control-file" name="img[]">
<button type="submit" class="btn btn-primary">Save</button>
{!! Form::close() !!}
我想得到以下结果
ID|page_id|name|img
1 |15 |1 |file1.jpg
2 |15 |2 |file2.jpg
3 |15 |3 |file3.jpg
控制器
public function store(Request $request)
{
if($request->hasFile('img')){
$fileNameExt = $request->file('img')->getClientOriginalName();
$fileName = pathinfo($fileNameExt, PATHINFO_FILENAME);
$fileExt = $request->file('img')->getClientOriginalExtension();
$fileNameToStore = $fileName.'_'.time().'.'.$fileExt;
$pathToStore = $request->file('img')->storeAs('public/images',$fileNameToStore);
}
$info = new Info;
$info->name = $request->input('Name');
$info->img = $fileNameToStore;
$info->page_id = $page->id;
$info->save();
}
顺便说一句,我做了一些测试,如果我使用,我的价值观甚至都没有回来
名=&#34; IMG []&#34;
但如果我使用下面的代码,它可以工作,但只返回最后一个输入数据
名=&#34; IMG&#34;
$info = new Info;
$name = $info ->name = $request->input('name');
$img = $info ->img = $fileNameToStore;
$id = $baninfo er->company_id = $company->id;
return $reqs = [$name,$img,$id];
将返回以下代码
[["name 1","name 2"],"123_1504558228.jpg",133]
但是我希望得到2张图片而不是最后一次输入img ... 有关如何插入这样的数据的任何提示吗?
答案 0 :(得分:0)
Heey myJuune,
我认为您的问题出现在下面显示的代码行中。
if($request->hasFile('img')){
当您在视图中放置img[]
时,它会自动创建一个数组。你忘记的是循环遍历图像阵列。 $request->get('img')
目前代表一系列图片。
如果您使用dd($request->get('img'));
,您应该会看到一系列图片。 (当您在输入中使用img[]
时)。
当你这样做时,你的代码应该可以工作:(我假设name
数组与img
数组的长度相同,因为{{1}的数组键正在使用1}}数组来检索名称值。您还可以看到我将您的数据库记录创建过程放在循环中,因为您将名称与图像相关联。
img
希望这有帮助! ;)