2017-04-23 1 views
0

내 양식의 두 개의 개별 파일 업로드 옵션에서 여러 이미지 파일을 전달한 다음 데이터베이스에 저장할 수 있습니까? 다음은 내 스키마 및 컨트롤러 코드입니다.laravel에서 두 개의 다른 파일 업로드 필드의 여러 이미지를 단일 양식으로 업로드하는 방법은 무엇입니까?

Schema::create('images', function (Blueprint $table) { 
     $table->increments('image_id'); 
     $table->increments('book_id')->unsigned(); 
     $table->string('coverPageImage'); 
     $table->string('previewPageImage'); 
     $table->timestamps(); 

    }); 

양식 필드 : bookID로서, coverPageImage에 대한 파일 업로드, previewPageImage에 대한 파일 업로드. coverPageImage와 previewPageImage는 둘 다 여러 이미지를 전달합니다.

이미지를 폴더에 업로드하고 단일 파일 업로드를 위해 데이터베이스에 저장할 수있었습니다.

Image::create([ 
    'book_id' => $book_id, 
    'cover_images' => $coverImage_name, 
    'preview_images' => $previewImage_name 
]); 

그러나 두 개의 서로 다른 파일 업로드에 대한 foreach 루프를 사용하는 동안 나는 붙어 :

$product_images = $request->file('coverPageImage'); 
foreach($product_images as $product_image){ 
    $coverImage_name = $product_image->getClientOriginalName(); 
    $upload = $product_image->move('images', $coverImage_name); 
    Image::create([ 
    'book_id' => $book_id, 
    'cover_images' => $coverImage_name 
     ]); 
} 

$preview_pages = $request->file('previewPageImage') 
foreach($preview_pages as $preview_image){ 
    $previewImage_name = $preview_image->getClientOriginalName(); 
    $upload = $preview_image->move('images', $previewImage_name); 
     Image::create([ 
     'book_id' => $book_id, 
     'preview_images' => $previewImage_name 
     ]); 
    } 

나는 방법 다음 사용하고 싶습니다. 어떤 제안이나 힌트.

답변

1

$coverImage_name$previewImage_name 사이에 항상 1 : 1 관계가 있다면, 배열로 루프를 밀어 넣고 배열을 반복하고 내부에서 이미지를 만들면됩니다.

$images = []; 
$product_images = $request->file('coverPageImage'); 
foreach ($product_images as $idx => $product_image){ 
    $coverImage_name = $product_image->getClientOriginalName(); 
    $upload = $product_image->move('images', $coverImage_name); 
    $images[$idx]['cover_image'] = $coverImage_name; 
} 

$preview_pages = $request->file('previewPageImage') 
foreach($preview_pages as $idx => $preview_image){ 
    $previewImage_name = $preview_image->getClientOriginalName(); 
    $upload = $preview_image->move('images', $previewImage_name); 
    $images[$idx]['preview_image'] = $previewImage_name; 
} 

foreach($images as $idx => $arr) { 
    Image::create([ 
     'book_id' => $book_id, 
     'cover_images' => isset($arr['cover_image']) ? $arr['cover_image'] : null, 
     'preview_image' => isset($arr['preview_image']) ? $arr['preview_image'] : null 
    ]); 
} 
+0

감사합니다. – cnayak

관련 문제