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