Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP Laravel按月从数据库中提取数据&;年_Php_Mysql_Laravel - Fatal编程技术网

PHP Laravel按月从数据库中提取数据&;年

PHP Laravel按月从数据库中提取数据&;年,php,mysql,laravel,Php,Mysql,Laravel,您好,我有这个函数,它将预算成本相加,并按月获取数据 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(budg

您好,我有这个函数,它将预算成本相加,并按月获取数据

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}
我试图实现的是按月获取数据作为预算,按月获取数据作为预算,按年获取数据 但我不能在查询中使用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类/方法作为SQL的抽象。但是您是否尝试过使用PDO和实际SQL语句来检索数据?

请尝试此代码

$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'))

        ->where('campaign_status_id',4) // campaign_status_id = 4 means campaign completed
        ->where(\DB::raw('MONTH(created_at)'), Carbon::today()->month)
        ->groupBy(\DB::raw("MONTH(created_at)"))
        ->get();

我假设第一个月是一年中的一个月,而不是每年的同一个月?您使用的是什么版本的Laravel?whereYear('created_at','=',$year)->whereMonth('created_at','=',$month)您好谢谢您的回答我这样试过了->选择('campaign_leadsource_id',\DB::raw('SUM(budget_cost)作为预算总额,$month)->whereMonth('created_at',','=',$month))->添加选择('campaign_leadsource_id',\DB::raw('SUM(budget_cost)作为budget_total_'.$Year)->whereYear('created_at','=',$Year))`但是我得到了“调用未定义的方法illumb\Database\Query\Expression::whereMonth()我使用laravel 5.7从今年开始只有一个月我是全新的如何实现这一点?你能给我一个代码示例开始吗?PDO select语句示例可以在本网站底部看到谢谢你的回答我尝试过,但出现了此错误
SQLSTATE[42000]:语法错误或访问冲突:1055'sedracrm.campaims.campaign\u leadsource\u id'不在分组依据中(SQL:select
campaign\u leadsource\u id
,SUM(budget\u cost)作为预算总月,
campaign\u leadsource\u id
,SUM(budget\u cost)作为预算总年从
campaign`其中
campaign\u status\u id
=4和月份(created_at)=3 groupBy MONTH(created_at))`请执行此操作。在config\database.php-->“mysql”数组中设置'strict'=>false以禁用所有。或者按照此操作,它可以工作,但它只按月获取数据,而不是按月和按年获取数据替换此
->groupBy(\DB::raw(“MONTH(created_at)”,\DB::raw(“YEAR(created_at)”)
但您应该选中此项以将代码更改为良好状态。它应该可以正常工作,我以前已经使用相同的方法完成了此操作。请选中此链接: