面部表结构:
id
photo_id
person_id
一个人可以在许多照片中。我想为每个人返回第一张照片。我试过了:
$faces = Face::select('person_id','photo_id')
->groupBy('person_id','photo_id')
->whereNotNull('person_id')
->get()
->toArray();
这将返回不同的组合,即每个人的所有照片。 Distinct
只会将我选择的列作为不同列返回。我需要两个回来。
答案 0 :(得分:1)
如果您只想要返回每人的第一张照片,请仅由该人分组并返回最少的照片ID。在sql中,它看起来如下:
select person_id, min(photo_id)
from yourtable
group by person_id
我对laravel并不是很了解,但是我尝试了查询的样子(你真的不需要person id不是null标准):
$faces = Face::select('person_id',DB::raw('min(photo_id) as photo_id')
->groupBy('person_id')
->get()
->toArray();