У меня есть две таблицы: пользователи и user_actions. Мне нужно получить всех пользователей, где («доступно», «истина») (... и другая логика) и упорядочить их по сумме столбца user_actions.clicks.Laravel 5.3. - как использовать sum ('column') из отношения в where where и orderBy it
public function actions()
{
return $this->hasMany(UserActions::class);
}
мне нужно что-то вроде этого:
User::where('available', true)->where("something else....")->orderBy('sum(user_actions.clicks)', 'desc')->get();
Результат должен быть коллекция класса пользователя.
спасибо, это было мое первое решение, но если я использую join, я получаю эту ошибку: «Ошибка синтаксиса или нарушение доступа: 1055« compari_ci.users.created_at »не находится в GROUP BY ...» created_at - это еще один поле в таблице пользователей. Я использую Laravel 5.3 btw. –
Это связано с MySQL. Пожалуйста, проверьте этот ответ http://stackoverflow.com/questions/34115174/error-related-to-only-full-group-by-when-executing-a-query-in-mysql –
Если я это сделаю, я получаю только значение суммы и атрибуты пользователя: '$ query-> join ('user_actions', 'user_actions.user_id', '=', 'users.id'); $ query-> selectRaw ('sum (user_actions.clicks) как клики'); $ query-> groupBy ('user_id'); $ query-> orderBy ('clicks', 'desc'); ' –