在Laravel/PHP中使用限制的SQL Select Join
我最初的查询搜索了主板,然后找到了主板的图像。但是现在,一些主板没有任何图像关联,所以我想运行一个查询,可以找到20个具有图像的独特主板 迄今为止的代码:在Laravel/PHP中使用限制的SQL Select Join,php,mysql,laravel,Php,Mysql,Laravel,我最初的查询搜索了主板,然后找到了主板的图像。但是现在,一些主板没有任何图像关联,所以我想运行一个查询,可以找到20个具有图像的独特主板 迄今为止的代码: $newMotherboards = Motherboards::join('images', 'motherboards.motherboard_id', '=', 'images.item_id') ->where('images.item_type', '=', 'motherboard') ->orderB
$newMotherboards = Motherboards::join('images', 'motherboards.motherboard_id', '=', 'images.item_id')
->where('images.item_type', '=', 'motherboard')
->orderBy('motherboards.date_added', 'desc')
->take(20)
->get();
我甚至尝试过选择特定的结果:
$newMotherboards = Motherboards::join('images', 'motherboards.motherboard_id', '=', 'images.item_id')
->select('motherboards.motherboard_id', 'motherboards.name')
->where('images.item_type', '=', 'motherboard')
->orderBy('motherboards.date_added', 'desc')
->take(20)
->get();
上面代码的问题是,当我循环遍历每个$newMotherboards时,它的ID为的每个映像都有副本。我只想检索最近添加的20个唯一的主板,但它们都有映像
如果一个项目有5个图像,并且是最近添加的20个图像之一,那么它将显示我的20个限制的5倍。不同版本:
$newMotherboards = Motherboards::join('images', 'motherboards.motherboard_id', '=', 'images.item_id')
->select('motherboards.motherboard_id', 'motherboards.name')
->where('images.item_type', '=', 'motherboard')
->distinct()
->orderBy('motherboards.date_added', 'desc')
->take(20)
->get();
Groupby版本:
$newMotherboards = Motherboards::join('images', 'motherboards.motherboard_id', '=', 'images.item_id')
->select('motherboards.motherboard_id', 'motherboards.name')
->where('images.item_type', '=', 'motherboard')
->groupby('images.item_type')
->orderBy('motherboards.date_added', 'desc')
->take(20)
->get();