2016-09-24 4 views
0

Группа с проблемой проблематична, так как я переключился на PHP 7 и не имеет агрегированных значений, чтобы не использовать ее.GroupBy в Laravel 5.3 и PHP 7 не работает

У меня есть список, а иногда есть повторы в списке. Например:

Название песни Песня Название Б Название песни А (повторение) Название песни С

В результатах, название песни А должен отображаться только один раз. Раньше я делал это с группой, где идентификатор, определяющий название песни, сгруппирован.

Моя структура таблицы:

id 
group_id 
song_title_id 

Song_title_id относится к:

id 
song_title 

В первой таблице, может быть несколько экземпляров одного и того же song_title_id. И когда результаты возвращаются, я хочу, чтобы в результатах был только один экземпляр каждого файла song_title_id.

Раньше я бы сделал:

DB::table('group_songs') 
     ->groupBy('song_title_id') 
     ->get(); 

Поскольку обновление до PHP 7, я получаю сообщение об ошибке:

Syntax error or access violation: 1055 '[table/column name]' isn't in GROUP BY 

Что я делаю неправильно?

ответ

0

По How to resolve "isn't in GROUP BY" error in mysql query Каждых необобщенных полей должны быть сгруппирован, поэтому попробуйте

DB::table('group_songs') 
     ->groupBy('song_title_id') 
     ->groupBy('group_id') 
     ->groupBy('id') 
      ->get(); 
+0

Таким образом, каждый столбец таблицы должен быть включен в GroupBy? – jerauf

+0

Нужно ли перечислять каждый столбец в таблице? Можно ли сделать то же самое с четкими? – jerauf

+0

Вы можете добавить только одного GroupBy и одного выбора 'DB :: таблицу (' group_songs ') -> выберите (' song_title_id ') -> GroupBy (' song_title_id ') -> получить();' , но если вам нужны все столбцы, вам нужно будет сгруппировать их или добавить функцию группы (например, MIN/MAX) на не сгруппированные столбцы – Geding

Смежные вопросы