首页 > 解决方案 > 在一个视图中显示多个图像 laravel 7

问题描述

我正在尝试显示在 Laravel 7 中运行良好的多个图像。我有一个产品和图像,其中一个产品有很多图像。我可以使用 http://localhost:8000/products/5 之类的 url 查看单个产品的所有图像。这仅显示 id 5 的所有图像。现在我想在视图中显示数据库中所有产品的所有图像,但按产品名称分组。即所有ID 为1、2、3 的图像都显示在视图中。这是我的控制器中的代码。我该如何调整这个?

  public function getImageData($id)
    {
      $product=Products::find($id);
      $images=$product->images()->get();
     return view('products',['product'=>$product
      ,'images'=>$images

 ]);
           
}

并在 web.php

Route::get('/products/{id}', 'ProductsController@getImageData');

标签: laravellaravel-7

解决方案


您要做的是创建一个新函数,该函数获取所有产品的所有图像,然后将图像放在每个产品的索引上。这可以通过以下方式实现:

public function getProductImages(){
    // Fetch all the products 
    $products = Products::all();

    // Create an array to hold the data
    $arrayOfImages = [];

    // Make a foreach over the products to fetch the data
    foreach($products as $product){
        $arrayOfImages[$product->id] = $product->images()->get();
    }

    return view('products', ['productImages' => $product]);
]);

在此之后,您可以简单地对特定索引进行 foreach 以获取每个产品的图像。例如

foreach($productImages[0] as $productImages){
    // Do the magic here
}

推荐阅读