2017-09-04 84 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