Laravel在Foreach中将数据从一种模型发送到另一种模型

时间:2019-05-10 16:15:04

标签: php mysql laravel eloquent laravel-query-builder

我需要将示例中的数据(price)发送到视图中,但要放在foreach内部。 在我的项目中,我在数据库的一个表中拥有产品数据(titleimg等)。

但是每种产品都有很多变体,我将这些变体放到另一个表中。 在view中,我有foreach,这使我12个产品循环。

我需要将price放在每个product内。

问题是在我的控制器中定义每个产品的id

products.blade.php:

    @foreach($products as $product) 

    <div> {{ here I need to put the price }} </div>

    <div> {{ $product->slug }} </div>

    @endforeach

ProductsController.php:

    // all prices for my variants
    $variants_prices = Variants
                           ::where('product_slug', '=', $slug)
                           ->get('attribute_price');

    // minimum price
    $min_price = $variants_prices
                     ->where('attribute_price', $variants_prices->min('attribute_price'))
                     ->first();

    // take value of minimum price from all variants
    $pdt_min_price = $min_price->attribute_price;

    return view('products.index')
               ->with('pdt_min_price', $pdt_min_price);

我的blade文件中需要包含以下内容:

enter image description here

如果有人能帮助我解决这个问题,我将感到非常高兴。

1 个答案:

答案 0 :(得分:0)

您可以在模型中定义Product和Variant之间的关系

在您的Product模型中:

function variant()
{
  return $this->hasMany('App\Variant', 'foreign_key');
}

然后您可以使用:

$products = Product::with(['variant'])->get();

然后在循环中,您可以使用其键访问该变体:

{{ $product->variant[$key]['price'] }}