我正在尝试使用指定的Shop
选择$item_id
。
Item
可以有多个Image
,但我只想要第一个。
当前代码仅为我提供了第一张图片,但它与图片一样多次复制该项目。
以下是代码:
$shops = Shop::with(array('items' => function($query) use ($item_id) {
$query->select('items.id', 'items.name', 'items_images.path AS image');
$query->join('items_images', 'items.id', '=', 'items_images.item_id');
$query->where('items.id', '=', $item_id);
}))
->get(array('shops.id', 'shops.shop_name', 'shops.lat', 'shops.lng'));
目前的输出:
如何避免获得所有重复项?
答案 0 :(得分:1)
我认为这会有效..我还没有完成这个语法,但我认为这是如何工作的(假设main在items_images表中)
$shops = Shop::with(array('items' => function($query) use ($item_id)
{
$query->select('items.id', 'items.name', 'items_images.path AS image');
$query->join('items_images', function($join)
{
$join->on('items.id', '=', 'items_images.item_id')
->where('items_images.main', '=', 1);
})
$query->where('items.id', '=', $item_id);
}))->get(array('shops.id', 'shops.shop_name', 'shops.lat', 'shops.lng'));
在其上找到DOCS ...如果你想将它包含在JOIN中,那么看起来你必须在JOIN中添加一个地方