我有两张桌子:
items (
id
name
description
)
images (
id
item_id
number // 0 -> main image ; 1,2,3,4 ... -> gallery_image
)
有这个基本关系:
#Item.php
public function images()
{
return $this->hasMany('Image');
}
和
#Image.php
public function item()
{
return $this->belongsTo('Item');
}
要在我的index.php中显示所有带有主图像的项目,我想获得所有项目和关系,但只有当" number"等于" 0" (主图)。
如果使用:
$all = $this->item->get();
foreach ($all as $one) {
var_dump ($one->images);
}
然后我得到所有项目(完美)以及每个项目的所有图像。但我想要一个包含所有项目和每个项目一个图像的集合。
最好的方法是什么?
感谢。
答案 0 :(得分:2)
最简单的方法是使用'helper'关系hasOne
。
它可以让您急切地加载单个相关模型:
// Use camelCase name, otherwise dynamic property won't work
public function mainImage()
{
return $this->hasOne('Image')
->orderBy('number', 'asc');
// or:
// ->where('number', 0);
}
然后你就可以使用它并急切加载它,如下所示:
$item->mainImage->number; // 0
$items = Item::with('mainImage')->get();