Laravel Query Builder子查询不返回特定的内部循环

时间:2018-04-17 08:56:41

标签: mysql laravel

我正在尝试将以下总计汇总到新集合中以使用报表,total_outbound的子查询未返回特定campaign_job_id的正确计数

  $campaign_jobs_summary = new Collection();
    foreach ($campaign_jobs as $campaign_job) {
        $campaign_job_totals = DB::table("campaign_jobs")
            ->select('campaign_jobs.deploy_date', 'campaign_jobs.campaign_id', 'campaign_jobs.id as campaign_job_id', 'campaign_jobs.start_time as local_start_time',
                'campaign_jobs.start_time as local_start_time', 'campaign_jobs.start_time as local_start_time', 'campaign_jobs.start_time as local_start_time',
                DB::raw("(select companies.name from companies join brands on brands.company_id = companies.id where brands.id =$campaign->brand_id) as company"),
                DB::raw("(select count(id) from campaign_results where direction = 'outbound-api' and reCall = '0' and campaign_job_id =$campaign_job->id ) as total_outbound"),
                DB::raw("(select count(id) as aggregate from campaign_results where  com_platform_status = 'completed' and direction = 'outbound-api' and campaign_job_id = $campaign_job->id ) as total_answered")
            )
            ->whereCampaignId(35)
            ->get();


        $campaign_jobs_summary = $campaign_jobs_summary->push($campaign_job_totals);
    }

    return $campaign_jobs_summary;

2 个答案:

答案 0 :(得分:0)

将代码行更改为

DB::raw("(select count(id) from campaign_results where direction = 'outbound-api' and reCall = '0' and campaign_job_id =".$campaign_job->id." ) as total_outbound");

答案 1 :(得分:0)

确定问题是将查询作为get()而不是first()返回循环,并将whereCampaignId更改为whereId by campaign_jobs.id