多个图像更新了laravel

时间:2019-07-09 03:06:33

标签: php mysql laravel laravel-5

我有两个相关的表,其中一个是products表,另一个是products_photos表。 products_photos表中有列idproduct_idfilename。编辑产品时,我正在尝试编辑多个图像。我收到的错误是

  

方法Illuminate\Http\Request::photos不存在。

如何一次编辑多张图像?

这是我创建多个图像的方式:

public function store(Request $request) 
{ 
    foreach ($request->photos as $photo) {
        $filename = $photo->store('public/photos');
        ProductsPhoto::create([
            'product_id' => $product->id,
            'filename' => $filename
        ]);
    } 
    return redirect()->back(); 
}

这是我编辑多张图像的方式:

$image = Product::with('ProductsPhoto')
    ->where('id', $request->product_id)
    ->first();

if($request->photos('photos')) {
    if(file_exists($image ->photos)){
        unlink($image ->photos);
    }
    $filename = $photos->store('public/photos');
    ProductsPhoto::create([
        'product_id' => $product->id,
        'filename' => $filename
    ]);
} else {
    $image = $photos->store('public/photos');
}

$product = Product::with('ProductsPhoto')
    ->find($request->product_id);

$product->filename = $product->ProductsPhoto[0]->filename;
$product->save();

刀片模板:

<input multiple="multiple" name="photos[]" type="file"> 

1 个答案:

答案 0 :(得分:0)

错误在$request->photos('photos')中。请求类别没有“照片” 方法。

我想你想做

if($request->hasFile('photos')) {}

if($request->has('photos')) {}

另外,从您的摘录中:

$image = Product::with('ProductsPhoto')->where('id',$request->product_id)->first();
...

if(file_exists($image ->photos)){
    unlink($image ->photos);
}

变量$ image是一个Product对象,并且表中没有照片列,因此 $ image->照片始终为空。相反,我认为您打算遍历$image->ProductsPhoto并获得$each->filename

但是我必须说,您的代码库中有很多错误,我建议您真正调试一下:

  • 您不会在更新中循环浏览多个文件
  • 您是否要替换所有以前的图像(如果以前有3张图像,现在我发送了2张,您是否希望3张图像消失并替换为新的2张图像?)。因为这也不是很清楚。

在其他人中。