【发布时间】:2015-04-14 04:03:41
【问题描述】:
我有一个查询要根据数据透视表中的值获取照片,它存储“图片”和“标签”的关系:
#photos
$q = PicTag::select(DB::raw('distinct(pics.id)'),
'pics.url',
'pics.titel',
'pics.hits',
'pics.created_at',
'users.username',
'users.displayname')
->leftJoin('pics', 'pics.id', '=', 'pic_tag.pic_id')
->leftJoin('users','users.id','=','pics.user_id')
->whereIn('pic_tag.tag_id', $tagids);
if($cat)
$q->where('typ',$cat);
if($year)
$q->where('jahrprod',$year);
$pics = $q->orderBy('pics.id','desc')
->paginate(30);
问题是,当为某张照片存储多个(相同)标签时,如“Tag”、“tag”和“tAG”。然后同一张照片将在我的画廊中显示 3 次。这就是我在查询中使用distinct 的原因。
那么图库就可以了,但是$pics->total() 没有显示“87 张照片”而是例如“90 张照片”,因为在分页中没有使用distinct。在 laravel 4 中,我使用了 groupBy('pics.id'),但这似乎不是最快的查询,而在 laravel 5 中,它给了我一个 total() 计数结果 1。
我怎样才能获得正确的total() 值?
【问题讨论】:
标签: pagination distinct laravel-5