繁体   English   中英

在Laravel中插入大量数据

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM