2017-09-04 128 views
0

我想插入具有相同输入“名称”的数据。 例如在Laravel中插入大量数据

{!! Form::open(['action' => '[email protected]', '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(); 
} 

BTW我做了一些测试,和我自己的价值观,如果我使用甚至不回

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图像instea d的最后输入img ... 任何提示如何插入这样的数据?

回答

0

Heey myJuune,

我觉得你的问题是在你的楼下所示的代码行。

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(); 

     } 

     } 

希望这有助于。!)

+0

感谢的答案,它可能会帮助我。 在这一刻提交后的形式一切正常,但它不会将数据保存到DB 编辑:我测试了dd($ request-> get('img'));并返回NULL – myJuune

+0

嗨myJuune,我的迟到的回应道歉。我很好奇你是否已经找到解决问题的办法?也许你可以邀请我在Github上合作,以便我可以帮助你?如果你需要解决方案的另一个答案,我也可以发布一个新的答案。 (我的设置可能与您的设置有所不同,但我不认为问题在于您的设置) – cojoy