在Laravel中插入大量数据

时间:2017-09-04 20:51:51

标签: php 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();   
}
顺便说一句,我做了一些测试,如果我使用

,我的价值观甚至都没有回来
  

名=&#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 ... 有关如何插入这样的数据的任何提示吗?

1 个答案:

答案 0 :(得分:0)

Heey myJuune,

我认为您的问题出现在下面显示的代码行中。

if($request->hasFile('img')){

当您在视图中放置img[]时,它会自动创建一个数组。你忘记的是循环遍历图像阵列。 $request->get('img')目前代表一系列图片。

如果您使用dd($request->get('img'));,您应该会看到一系列图片。 (当您在输入中使用img[]时)。

当你这样做时,你的代码应该可以工作:(我假设name数组与img数组的长度相同,因为{{1}的数组键正在使用1}}数组来检索名称值。您还可以看到我将您的数据库记录创建过程放在循环中,因为您将名称与图像相关联。

img

希望这有帮助! ;)