【发布时间】:2019-03-15 17:14:02
【问题描述】:
你好,我有这个函数,它可以对budget_cost 求和并按月获取数据
public function marktingCost(){
$costs = \DB::table('campaigns')
->select('campaign_leadsource_id', \DB::raw('SUM(budget_cost) as budget_total_month'))
->addselect('campaign_leadsource_id', \DB::raw('SUM(budget_cost) as budget_total_year'))
->groupBy('campaign_leadsource_id')
->where('campaign_status_id',4) // campaign_status_id = 4 means campaign completed
->where(\DB::raw('MONTH(created_at)'), Carbon::today()->month)
->get(); return $costs}
我试图实现的是按月获取数据作为budget_total_month,并按年获取数据作为budget_total_year 但我不能在查询中使用 if 条件我想做这样的事情
->select('campaign_leadsource_id', \DB::raw('SUM(budget_cost) as budget_total_month') ->where(\DB::raw('MONTH(created_at)'), Carbon::today()->month))
->addselect('campaign_leadsource_id', \DB::raw('SUM(budget_cost) as budget_total_year') ->where(\DB::raw('Year(created_at)'), Carbon::today()->year))
但这当然是无效的
我想要的输出是
[{"campaign_leadsource_id":1,"budget_total_month":11475,"budget_total_year":134761,"olxTotal":12,"budget_per_lead":11230},{"campaign_leadsource_id":2,"budget_total_month":4221,"budget_total_year":41215,"olxTotal":9,"budget_per_lead":4579}]
提前谢谢你
【问题讨论】:
-
我假设第一个月是一年中的月份,而不是每年的同一个月?你使用的是什么版本的 Laravel?
-
whereYear('created_at', '=', $year) ->whereMonth('created_at', '=', $month)
-
你好谢谢你的回答我试过这样`->select('campaign_leadsource_id', \DB::raw('SUM(budget_cost) as budget_total_'。$Month)->whereMonth( 'created_at', '=', $Month)) ->addselect('campaign_leadsource_id', \DB::raw('SUM(budget_cost) as budget_total_' . $Year)->whereYear('created_at', '=', $year))` 但我得到“调用未定义的方法 Illuminate\Database\Query\Expression::whereMonth()”
-
我从今年开始使用 laravel 5.7 仅一个月