[英]Inserting bulk of data in Laravel
我想插入具有相同输入的“名称”的数据。 例如
{!! 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();
}
顺便说一句,我做了一些测试,如果我使用,我的值甚至都没有返回
name =“ img []”
但是如果我在下面使用代码,它可以工作,但是只返回最后一个输入数据
name =“ img”
$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 ...如何插入这样的数据的任何提示?
嘿,我的六月
我认为您的问题出在下面的代码行中。
if($request->hasFile('img')){
当您在视图中放置img[]
,它会自动创建一个数组。 您忘记的是循环遍历图像数组。 $request->get('img')
当前表示图像数组。
如果您使用dd($request->get('img'));
您应该会看到一系列图像。 (当然,当您在输入中使用img[]
时)。
当你做这样你的代码应工作:(我假设的name
数组是具有相同的长度为img
数组,因为数组键img
阵列正在使用检索名称值可以。还可以看到我将您的数据库记录创建过程放入循环中,因为您正在将名称与图像相关联。
public function store(Request $request)
{
if($request->has('img')) {
foreach($request->get('img') as $key => $img)
$fileNameExt = $img->getClientOriginalName();
$fileName = pathinfo($fileNameExt, PATHINFO_FILENAME);
$fileExt = $img->getClientOriginalExtension();
$fileNameToStore = $fileName.'_'.time().'.'.$fileExt;
$pathToStore = $img->storeAs('public/images',$fileNameToStore);
$info = new Info;
$info->name = $request->input('Name')[$key];
$info->img = $fileNameToStore;
$info->page_id = $page->id;
$info->save();
}
}
希望这可以帮助! ;)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.