Laravel 5.6 - GroupBy не работает - PullRequest
0 голосов
/ 04 июля 2018

Я пробовал это несколькими способами, но это не работает (кажется, что игнорирую это). Итак, что я попробовал:

$user->notes()->groupBy('title')->get();

Выше полностью игнорирует groupBy и просто возвращает коллекцию заметок.

Note::where('user_id', $user->id)->groupBy('title')->get();

Точно такой же вывод с этим тоже.


В моем database.php база данных установлена ​​на 'strict' => false


Я также пытался использовать запрос raw db, он возвращает его в странном формате (возвращает 1 строку для каждого заголовка, когда я использую groupBy)

DB::table('notes')->where('user_id', $user->id)->groupBy('title')->get();

Я видел много людей, сталкивающихся с этой проблемой, однако ни один из предложенных способов (выше) не решил эту проблему.

Я могу добиться того, чего хочу, используя collection->each(function ($note) {...} ), однако, хотя есть группа, которая позволяет легко добиться этого с 1 строкой, почему тяжелая работа ..

Кто-нибудь знает, почему это не работает?

Ответы [ 2 ]

0 голосов
/ 04 июля 2018

выберите select () и добавьте свою группу по полю в select

   e.g DB::table('notes')->select('title','Other_field')->where('user_id', $user->id)->groupBy('title')->get();
0 голосов
/ 04 июля 2018

вам просто нужно сначала вызвать метод -> get (), а затем - - groupBy (). Это потому, что в SQL-запросе необходимо сначала выбрать элементы, а затем группу.

Итак, ваш код должен быть таким:

DB::table('notes')->where('user_id', $user->id)->get()->groupBy('title');

Вот пример группы по запросу:

SELECT column_name(s)
FROM table_name
WHERE condition
GROUP BY column_name(s)
ORDER BY column_name(s);
...