2016-03-11 3 views
4

Структура базы данных выглядит следующим образом:Регистрация и SUM в Laravel красноречивый

Таблица: пользователи

id | name | email | password 

Таблица: аналитика

id | user_id(fk) | article_id(fk) | revenue | date | clicks 

Теперь я хочу список всех пользователи с суммой собственных выручка из этих двух таблиц.

То, что я попытался это следующим образом:

$users = User::select('users*', 'analytics.*', 'SUM(analytics.revenue)') 
     ->leftJoin('analytics', 'analytics.user_id', '=', 'users.id) 
     ->where('analytics.date', Carbon::today()->toDateString()) 
     ->get(); 

Но это бросает мне ошибку.

+0

я не имею знания larave, но, как я видел ваш запрос вы не использовать группу пользователем. после добавления группы к ней будет работать –

ответ

0

Вы можете попробовать это

$users = User::select('users*', 'analytics.*', DB::raw('SUM(analytics.revenue) As revenue')) 
     ->leftJoin('analytics', 'analytics.user_id', '=', 'users.id') 
     ->where('analytics.date', Carbon::today()->toDateString()) 
     ->get(); 
+0

Возможно, вы также захотите добавить оператор '-> groupBy ('users.id')'. – fmgonzalez

0
$users = User::select(\DB::raw('users.*, SUM(analytics.revenue) as revenue')) 
     ->leftJoin('analytics', 'analytics.user_id', '=', 'users.id') 
     ->groupBy('users.id') 
     ->get(); 
Смежные вопросы