DB::table('posts')
->select('user_id', DB::raw('MAX(created_at) as last_post_created_at'))
->where('is_published', true)
->groupBy('user_id');
$users = DB::table('users')
->joinSub($latestPosts, 'latest_posts', function ($join) {
$join->on('users.id', '=', 'latest_posts.user_id');
})->get();
Дело в том что такой запрос выдает ошибку
SELECT list is not in GROUP BY clause and contains nonaggregated column
Вопрос: как переписать код, не отключая строгий режим в mysql ? Ведь он включен по умолчанию. Спасибо!
ну добавить груп бай поля из селекта
Ага, спасибо тебе за простой ответ.
Блин так у меня лишние строчки в выдаче. Как агрегировать по одному столбцу а выбрать несколько? :)
ты напиши сперва правильный запрос на sql, чтоб он выдал то, что нужно, затем его проще будет в орм переписать
Используй подзапрос, это тот случай когда невозможно получить данные с помощью одного запроса, если конечно не требуется делать group by по всем полям.
Обсуждают сегодня