Как обновить несколько изображений в Laravel? - PullRequest
0 голосов
/ 07 ноября 2019

Я хочу сохранить изображения для продукта, в котором есть несколько изображений. Проблема в том, что я хочу обновить изображение. Проблема в том, что изображения обновляются, но запись никогда не попадает в базу данных. вместо этого он сохраняет ту же запись два раза.

if($request->hasfile('image')) {           //here i got images
    $file = $request->file('image');
    $file_count= count($file);              //for updating multiple images 

    for ($i=0; $i < $file_count; $i++) { 

        $imagesize  = $file[$i]->getClientSize();
        $imageexten = $file[$i]->getClientOriginalExtension();
        $product_image_count = count($request->productimagename);

        for ($i=0; $i < $product_image_count; $i++) { 
            if($file_count != 1) { 
                $new_name = $request->productimagename[$i].$i.".".$imageexten;
            } else {
                $new_name = $request->productimagename[$i].".".$imageexten;
            }
            $product_image_path ='images/frontendimage/product_image/'.$new_name;
            Image::make($file[$i])->save($product_image_path);    

            foreach ($product->images as $key => $value) {       
                product_image::find($value->id)->where('product_id','=',$product->id)
                ->update(['image_name'=> $new_name,'image_url'=>$product_image_path,
                    'modified_by'=>Auth::user()->id]);
            } 
        }
    } 
}

1 Ответ

0 голосов
/ 07 ноября 2019

Поле ввода -

<input type="file" name="images[]"  class="form-control"  multiple required />

Контроллер -

$imagesName = array();
$imagesPath = array();

if($files=$request->file('images')){
    foreach (Input::file('images') as $file) {
        $name           = strtolower($file->getClientOriginalName());
        $name           = preg_replace('/\s+/', '_', $name);
        $img            = Image::make($file);

        $path           = 'your/path/'.$name;

        $img->save($path);

        $imagesName[]   = $name;
        $imagesPath[]   = $path;
    }
}

Это позволит загрузить несколько изображений на ваш сервер, и вы получите загруженные имена изображений из $imagesName[] и путь от $imagesPath[].

Теперь вы можете использовать их в соответствии с вашей структурой BD.

...