Sid*_*rth 8 mysql laravel eloquent
数据库结构如下:
表:用户
id | name | email | password
Run Code Online (Sandbox Code Playgroud)
表:分析
id | user_id(fk) | article_id(fk) | revenue | date | clicks
Run Code Online (Sandbox Code Playgroud)
现在,我需要这两个表中所有用户的列表以及他们自己的收入之和。
我尝试了如下:
$users = User::select('users*', 'analytics.*', 'SUM(analytics.revenue)')
->leftJoin('analytics', 'analytics.user_id', '=', 'users.id)
->where('analytics.date', Carbon::today()->toDateString())
->get();
Run Code Online (Sandbox Code Playgroud)
但这给我抛出了错误。
小智 6
你可以尝试这个
$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();
Run Code Online (Sandbox Code Playgroud)
这也许有点晚了。也许会帮助别人。
您需要在 groupBy 中包含每个选择的列。在你的情况下:
$users = User::select('users.id', 'users.name', 'users.password', 'analytics.date', 'analytics.clicks', 'SUM(analytics.revenue) as revenue')
->leftJoin('analytics', 'users.id', '=', 'analytics.user_id')
->where('analytics.date', Carbon::today()->toDateString())
->groupBy('users.id', 'users.name', 'users.password', 'analytics.date', 'analytics.clicks')
->get();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7869 次 |
| 最近记录: |