2016-11-07 6 views
1

私はlaravelで複数の画像をアップロードしています。アップロードは成功ですが、問題があります。後で使用するために、私はデータベースに格納する必要があります。単一の列のためにそれは簡単ですが、私はそれを行うことができなかった異なる画像のための異なる列のために。複数の画像パスをlaravelのデータベースに保存する方法は?

ここに私の画像アップロードコード $ images = []; $ destDir = "public/uploads /";

if($request->file('image1')) $images[]=$request->file('image1'); 
    if($request->file('image2')) $images[]=$request->file('image2'); 
    if($request->file('image3')) $images[]=$request->file('image3'); 

    foreach($images as $image) 
    { 

     if(!empty($image)) 
     { 
      $imageName = $image->getClientOriginalName(); 
      $extension = $image->getClientOriginalExtension(); 
      $temPath = $image->getRealPath(); 
      $enImg = mt_rand(1111,9999).".".$extension; 
      $newPath = $destDir.$enImg.".".$extension; 
      move_uploaded_file($temPath, $newPath); 
     } 
    } 

答えて

1

たびに、私はあなたがこれを近づいている感じを持って、このテーブルに格納あなたの$newPath

Table schema:- `images` table 
columns `id`,`user_id`(foreign key),`image_path` 

..別の行に、ピボットテーブルや店舗イメージを作成それはあなたのためにそれをより困難にしています。代わりに、あなただけの複数のファイル入力を設定し、そのような配列への入力の名前を設定することができ、あなたの形で複数の独立したファイルの入力を作成する:

<form action="demo_form.asp"> 
    Images: <input type="file" name="images[]" multiple> 
    <input type="submit"> 
</form> 

次に、あなたのPHPで、あなたはこのような何かを行うことができます

if (isset($request->all()['images'])) { 
    $this->persistUserImages($request->all()['images'], $userId); 
} 

/** 
* Persists user images to storage and DB 
* 
* @param array $userImages 
* @param int $userId 
* @return array 
*/ 
private function persistUserImages(array $userImages, $userId = 1) 
{ 
    if (empty($userImages)) { 
     return []; 
    } 

    $uploadedUserImagesFilenames = $this->uploadUserImagesToCloud($userImages, $userId); 

    foreach ($uploadedUserImagesFilenames as $filename) { 
     $userImage = new UserImage([ 
      'user_id' => $userId, 
      'filename' => $filename, 
      'visible' => 1 
     ]); 

     $userImage->save(); 
    } 
} 
+0

@pandesantosこれで問題が解決しましたか? –

+0

@ restis-palampougioukisはいありがとうございました。遅刻してすみません。 – pandesantos

+0

@pandesantos問題はありません!助けてくれると嬉しいです。あなたは答えを受け入れたものとしてマークできますか? –

関連する問題