【问题标题】:Multiple images update laravel多张图片更新 laravel
【发布时间】:2019-11-18 13:13:52
【问题描述】:

我有两个相关的表,其中一个是 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"> 

【问题讨论】:

  • 分享sn-p,显示你的Product模型和ProductPhoto之间的雄辩关系
  • 你是指关系吗? @亨利
  • 是的@joh。我刚刚在你的代码中注意到,你这样做了: $request->photos('photos') 你是什么意思?
  • 我已经用模型@Henry 更新了问题

标签: php mysql laravel laravel-5


【解决方案1】:

错误在$request-&gt;photos('photos')。 Request 类没有 "photos" 方法。

我想你想这样做:

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

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

另外,来自您的 sn-p:

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

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

变量 $image 是一个 Product 对象,并且您的表中没有 photos 列,因此 $image->photos 将始终为空。相反,我认为您的意思是遍历 $image-&gt;ProductsPhoto 并获取 $each-&gt;filename

但我必须说,你的代码库中有很多错误我建议你真正调试它:

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

等等。

【讨论】:

  • 所以我收到了这个错误Unknown column 'filename' 它来自这一行$product-&gt;filename = $product-&gt;ProductsPhoto[0]-&gt;filename; @Henry
  • 是的,我想替换图像,所以如果我添加两个并且之前有 3 个,我希望替换这 3 个 @Henry
  • 我已按照您的建议进行了编辑,但它在else 语句$image = $photos-&gt;store('public/photos'); 下方的行中显示错误"Undefined variable: photos",我试图评论该行,但我收到了另一个错误Unknown column 'filename'$product-&gt;filename = $product-&gt;ProductsPhoto[0]-&gt;filename; 你可以看到问题@Henry 的编辑
猜你喜欢
  • 2015-04-14
  • 2019-09-05
  • 2018-04-28
  • 1970-01-01
  • 2021-11-14
  • 2017-07-27
  • 2021-12-22
  • 2019-12-25
  • 2020-03-20
相关资源
最近更新 更多