【问题标题】:Laravel join two tableLaravel 连接两个表
【发布时间】:2018-01-15 20:28:41
【问题描述】:

我有两个表,即查看表和点击表,如下所示

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));

如果有人知道这个问题的答案,请尽快让我知道。

谢谢。

【问题讨论】:

    标签: php mysql laravel laravel-query-builder


    【解决方案1】:

    你可以在一个查询中做到这一点

    $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

    【讨论】:

    • 我们可以从两个具有唯一日期的表中获取计数吗?
    • 你试过代码了吗?这是一个新问题吗?还是与这个问题有关?
    • 我试过先生,但无法得到预期的结果。我想从两个表中获取基于月份的数据计数
    【解决方案2】:

    使用 laravel 查询构建器连接

    DB::table('View')
                ->join('Click', 'View.Created_at', '=', 'Click.Created_at')->get();
    

    【讨论】:

    • 如何使用上述查询按月获取数据?
    • 如何插入 created_at ?时间戳还是月份?
    • 这是一个时间戳。
    猜你喜欢
    • 2017-06-23
    • 2021-04-29
    • 2023-04-09
    • 2020-05-11
    • 2014-03-24
    • 1970-01-01
    • 1970-01-01
    • 2019-08-11
    • 2019-06-28
    相关资源
    最近更新 更多