Laravel 加入两个 table
Laravel join two table
我有两个 table 即查看 table 和单击 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
我想获取基于月份的计数数据。通过查询我想得到 table 如下信息。
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));
如果有人知道这个问题的答案,请尽快告诉我。
谢谢。
您可以在一个查询中做到这一点
$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
.
使用 laravel 查询构建器连接
DB::table('View')
->join('Click', 'View.Created_at', '=', 'Click.Created_at')->get();
我有两个 table 即查看 table 和单击 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
我想获取基于月份的计数数据。通过查询我想得到 table 如下信息。
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));
如果有人知道这个问题的答案,请尽快告诉我。
谢谢。
您可以在一个查询中做到这一点
$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
.
使用 laravel 查询构建器连接
DB::table('View')
->join('Click', 'View.Created_at', '=', 'Click.Created_at')->get();