【发布时间】:2018-10-30 22:38:35
【问题描述】:
我正在使用 GROUP_CONCAT 函数来获取 Laravel 中所选专业人士的多个照片图像路径。代码在模型类中。 代码段如下:
$professionals = DB::table('member_professional')
->select("member_professional.*",
DB::raw("(GROUP_CONCAT(DISTINCT photos.picture_path SEPARATOR ',')) as 'photos'"))
->join('member','member_professional.member_id_fk','=','member.member_id')
->join('photos','photos.member_fk','=','member.member_id')
->leftjoin('locations','member.city','=','locations.location_id');
if ($professionals_type != '') {
$professionals = $professionals->where('member_professional.biz_category','=',$professionals_type);
}
if ($location != '') {
$professionals = $professionals->where('member.city','=',$location);
}
$professionals = $professionals->where('member.member_type','=',2);
$professionals = $professionals->groupBy('member_professional.member_id_fk')
->paginate(20);
当我在登台服务器上运行它时:http://dev.interioradditions.pk/allProfessionals 它会抛出错误:
SQLSTATE[42000]:语法错误或访问冲突:1055 'interior_dev_db.member_professional.biz_name' 不在 GROUP BY (SQL: select
member_professional.*, (GROUP_CONCAT(DISTINCT photos.picture_path SEPARATOR ',')) as 'photos' 从member_professional内连接membermember_professional.member_id_fk=member.member_id内连接photosphotos.member_fk=member.@987 左加入locationsmember.city=locations.location_id其中member.member_type= 2 分组member_professional.member_id_fk限制 20 偏移量 0)
而当我从上面的语句中提取构建的 sql 查询并通过 PHPMyAdmin 执行时,它运行良好并给出了预期的结果。请帮助了解模型查询中的问题。
谢谢!
【问题讨论】:
-
您在滥用 group by 子句
-
如果你设置模型和关系会很容易,然后 eloquent 会完成剩下的工作,不需要
GROUP_CONCAT -
能否请您帮助如何在这种特殊情况下使用 group by 子句?