我有两个表,即View table和Click table,如下所示
id View_count Created_at
1 10 January
2 20 Febrauary
3 30 March
id Click_count Created_at
1 20 January
2 40 March
3 30 May我想获取基于月份的计数数据。通过查询,我希望获得如下所示的表信息。
Created_at View_count Click_count
January 10 20
Febrauary 20
March 30 40
May 30我试过这样做:
$view_count= View::select(DB::raw("count(*) as count"))
->orderBy("created_at")
->groupBy(DB::raw("month(created_at)"))
->get()->toArray();
$view_count= array_column($view_count, 'count');
$click_count= Click::select(DB::raw("count(*) as count"))
->orderBy("created_at")
->groupBy(DB::raw("month(created_at)"))
->get()->toArray();
$click_count= array_column($click_count, 'count');
$count_bymonth = View::select(DB::raw('MONTHName(created_at) as month'))
->groupBy(DB::raw(' MONTH(created_at)'))
->get()->toArray();
$count_bymonth = array_column($count_bymonth , 'month');
return view('testing')
->with('view_count', json_encode($view_count, JSON_NUMERIC_CHECK))
->with('click_count', json_encode($click_count, JSON_NUMERIC_CHECK))
->with('count_bymonth', json_encode($count_bymonth, JSON_NUMERIC_CHECK));如果有人知道答案,请尽快让我知道。
谢谢你。
发布于 2017-08-08 18:17:42
您可以在一个查询中完成此操作
$result = View::join('Click','Click.Created_at','=','View.Created_at')
->select(
'Click_count.Created_at'
DB::raw('SUM(Click_count) as Click_count'),
DB::raw('SUM(View_count) as View_count')
)
->groupBy('Click.Created_at')
->orderBy("created_at")
->get();
return view('testing')->with('result'); 然后,您所要做的就是循环result。
发布于 2017-08-08 18:38:52
使用laravel查询构建器连接
DB::table('View')
->join('Click', 'View.Created_at', '=', 'Click.Created_at')->get();https://stackoverflow.com/questions/45565434
复制相似问题