Laravel在View里面的Eloquent方法

时间:2014-08-13 08:25:59

标签: php view model laravel-4 eloquent

我有两个名为ProductProductImage的模型。我还有一个视图,我想列出所有产品及其相关ProductImage,其中属性main_image等于1。在ProductController我调用模型all()的方法Product并将其存储在视图的data数组中,以便我可以循环查看视图中的产品。但在该循环内,我想展示该产品的相关主要图像。我可以通过在视图中调用诸如where()first之类的Eloquent方法来完成此操作吗?

问候,

2 个答案:

答案 0 :(得分:0)

我猜你的ProductImage实体有一个产品实体的外键。因此,Product可以有多个ProductImage。

在您的商品模型中,您可以添加以下内容:

public function images()
{
    return $this->hasMany('ProductImage');
}

在你看来:

@foreach($product->images as $image)
    // Do what you want.
@endforeach

我希望我理解你的问题。

答案 1 :(得分:0)

这就是您所需要的:http://softonsofa.com/tweaking-eloquent-relations-how-to-get-latest-related-model/

只有你这种关系看起来像这样:

public function mainImage()
{
  return $this->hasOne('ProductImage')->where('main_image', 1);
}

然后你可以简单地做这样的事情:

// fetch
$products = Product::with('mainImage')->paginate(10);

// output
@foreach($products as $product)
  ...
  <img src="{{ $product->mainImage->url }}" />
  ...
@endforeach