В соответствии с новым выпуском режим ONLY_FULL_GROUP_BY
по умолчанию включен, и вам нужно использовать полное выражение GROUP BY, так как все столбцы, присутствующие в вашем списке выбора (кроме агрегированных), должны присутствовать в GROUP BY
, как
select a,b, count(c)
from table
group by a,b
В вашем случае вам нужно указать, какие столбцы вам нужны из member_professional
например
$professionals = DB::table('member_professional as mp')
->select('mp.member_id_fk', 'mp.col1', 'mp.col2', 'mp.col3', DB::raw("(GROUP_CONCAT(DISTINCT p.picture_path SEPARATOR ',')) as 'photos'"))
->join('member as m','mp.member_id_fk','=','m.member_id')
->join('photos as p','p.member_fk','=','m.member_id')
->leftjoin('locations','m.city','=','locations.location_id');
if ($professionals_type != '') {
$professionals = $professionals->where('mp.biz_category','=',$professionals_type);
}
if ($location != '') {
$professionals = $professionals->where('m.city','=',$location);
}
$professionals = $professionals->where('m.member_type','=',2)
->groupBy('mp.member_id_fk', 'mp.col1', 'mp.col2', 'mp.col3')
->paginate(20);
Также обратите внимание на использование GROUP_CONCAT "Результат урезается до максимальной длины, которая равназадается системной переменной group_concat_max_len, значение которой по умолчанию равно 1024. Значение может быть установлено выше, хотя эффективная максимальная длина возвращаемого значения ограничена значением max_allowed_packet ".