Laravel 5.2 - 无法更新多个图像,未定义的偏移量:0

Laravel 5.2 - Can't Update Multiple Images, Undefined offset: 0

我正在尝试用多个图像表单更新 table 字段。创建表单工作正常,但问题是当我尝试更新它时。

所以这里更新函数的控制器:

 public function update(Request $request, $id)
{
    $update = new Product($request->all());
    $product=Product::find($id);

    $picture = ''; 
    $images = [];
    if ($request->hasFile('images')) {
    $files = $request->file('images');
    foreach($files as $file){
    $filename = $file->getClientOriginalName();
    $extension = $file->getClientOriginalExtension();
    $picture = date('His').$filename;
    $destinationPath = base_path() . '\public\images/';
    $file->move($destinationPath, $picture);
    $images[]=$picture;
    }
    }

    if (!empty($product['images'])) {
    $product['images'] = $images[0];
    $product['images2'] = $images[1];
    $product['images3'] = $images[2];
    $product['images4'] = $images[3];
    } else {
    unset($product['images']);
    }

    $product->update($update);
    return redirect('product');
}

如果不够清楚,可以在codeshare.io

上查看完整的ProductController

更新形式为codeshare.io 如您所见,我正在使用数组将图像插入数据库并且数组已在 $product['images4'] = $images[3];

上定义

这是放图片的地方。

但它给了我错误:

ErrorException in ProductController.php line 149: Undefined offset: 0

你能推荐一个更好的代码或者解释一下这个错误吗?非常感谢 ;) 祝你有个愉快的一天。

在 foreach 关闭后使用 print_r($image); exit; 并用 kay 和 value 检查数组并排列它

当您尝试访问未上传的图像的索引时,会出现未定义的偏移量

To fix this problem, you should modify your code like this -

public function update(Request $request, $id)
{
    $update = $request->all();
    $product = Product::find($id);

    $picture = ''; 
    $images = [];
    if ($request->hasFile('images')) {
      $files = $request->file('images');
      foreach($files as $file){
        if (isset($file)){
          $filename = $file->getClientOriginalName();
          $extension = $file->getClientOriginalExtension();
          $picture = date('His').$filename;
          $destinationPath = base_path() . '\public\images/';
          $file->move($destinationPath, $picture);
          array_push($images, $picture);
        }
      }
    }

    if (!empty($product['images']) && isset($images[0])) {
      $update['images'] = $images[0];
    } 
    if (!empty($product['images2']) && isset($images[1])) {
      $update['images2'] = $images[1];
    } 
    if (!empty($product['images3']) && isset($images[2])) {
      $update['images3'] = $images[2];
    }
    if (!empty($product['images4']) && isset($images[3])) {
      $update['images4'] = $images[3];
    } 
    unset($update['images']);
    $product->update($update);
    return redirect('product');
}