php – Mysql查询组Concat在单个查询中限制子表的多个记录

前端之家收集整理的这篇文章主要介绍了php – Mysql查询组Concat在单个查询中限制子表的多个记录前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
相册表:
+------------------------------+
| id      name       updated_at|
+------------------------------+

Album_member表:

+------------------------------------+
| id      album_id         member_id |
+------------------------------------+

Album_media表:

+--------------------------------+
| id       album_id         link |
+--------------------------------+

我的查询

$limit = 30;
$member_id = 1;
SELECT a . *,(SELECT GROUP_CONCAT(CONCAT('$assets/album_image/medium/',ds_album_media.link) SEPARATOR ',') as link
FROM ds_album_media WHERE ds_album_media.album_id = a.id ORDER BY a.updated_at desc LIMIT 0,5)
AS photo_link FROM `ds_album` a
LEFT JOIN ds_album_media amd ON amd.album_id = a.id
LEFT JOIN ds_album_member amb ON amb.album_id = a.id
where amb.member_id = " . $member_id . " GROUP BY a.id
ORDER BY a.updated_at desc LIMIT 0,$limit

现在,对于每张专辑,有多个album_media和album_member是专辑用户正在关注的,我想要的数据以这种方式检索所有使用以下的相册,并且该相册的所有照片,但约束是需要设置album_media限制5和专辑限制30.

>限制不工作,因为我使用group_concat任何其他方式来限制group_concat的记录?
>我正在使用laravel,所以任何解决方案也是最受欢迎的.

我使用substring_index()函数,但是在性能方面是否足够了?

我试过这个查询与laravel,

Laravel查询(编辑):

$data = Album::select("album.*")
    ->leftjoin("album_media",'album_media.album_id','=','album.id')
                    ->leftjoin("album_member",'album_member.album_id','album.id')
    ->where('album_member.member_id',$member_id)
    ->with(['albumMedia' => function($query) {
       return $query->where('album_id','album.id')->take(5);
    }])
    ->groupBy('album.id')->orderBy('album.updated_at','desc')->take($limit)->skip($skip)->get()->toArray();
建立你的关系,然后限制他们:
$albums = Album::with('albumMedia','albumMembers')
->whereHas('albumMembers',function($query) use ($userId) {
    $query->where('albumMembers.member_id',$userId);
})
->orderBy('album.updated_at')
->take($limit)
->skip($skip)
->get();

最后,您可以添加一个方法到Album模型,这将帮助您检索连接的字符串/链接,基于热切的关系.

更好的是,而不是做一个地方,你可以像Album模型上的范围方法一样,这将为您创建它.这将比上面的例子更干净.

猜你在找的PHP相关文章