Mysql 将联接限制为1

Mysql 将联接限制为1,mysql,laravel,orm,eloquent,Mysql,Laravel,Orm,Eloquent,我正在尝试挑选具有指定的$item\u id的商店 一个项目可以有多个图像s,但我只想要第一个 当前代码只提供第一个图像,但它复制项目的次数与图像的次数相同 代码如下: $shops = Shop::with(array('items' => function($query) use ($item_id) { $query->select('items.id', 'items.name', 'items_images.path AS imag

我正在尝试挑选具有指定的
$item\u id
商店

一个
项目
可以有多个
图像
s,但我只想要第一个

当前代码只提供第一个图像,但它复制项目的次数与图像的次数相同

代码如下:

$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'));
以及电流输出:


我怎样才能避免得到所有的副本呢?

我想这会有用的。。我对这种语法没有做太多的研究,但我认为这就是它的工作原理(假设main位于items_images表中)


在上面找到了。。。如果要将其包括在联接中,则必须添加一个where to the联接

什么决定第一个联接?我的意思是你可以添加一个群组,但我不知道你对显示什么图像有什么具体要求(群组可以自由选择显示哪一行)哦,我忘了提到这一点。第一个是
main=1
我在结果中没有看到main?你不能在连接上指定它吗?它不在我的
选择中,这就是为什么你在结果中看不到它的原因。我如何在联接中指定它?
$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'));