Laravel搜索关系字段值+关系字段值等于字段值

时间:2019-05-08 16:40:52

标签: mysql sql laravel eloquent

我正在使用Laravel 5.8,我需要执行一个查询,该查询搜索一个关系中特定字段的值+另一个关系中特定字段的值是否等于主表的字段值。

更具体地说,模型是:JobAdApplicationOfferApplicationStatusOfferStatus。每个JobAd都有一个workers_needed字段。我想获取所有职位广告,其中应用程序的状态已批准 + 提供状态已批准的 = job_ad.workers_needed

每个JobAd 有很多 ApplicationOffer

每个Application 属于 ApplicationStatus

每个Offer 属于 Offerstatus

每个ApplicationStatusOfferStatus均已批准,其值为布尔值

2 个答案:

答案 0 :(得分:2)

我不确定这是否行得通(从未尝试过),但是您可以尝试将withCount()havingRaw()结合使用:

$data = JobAd::withCount([
        'applications' => function ($query) {$query->where('status', 'approved');},
        'offers'       => function ($query) {$query->where('status', 'approved');},
    ])
    ->havingRaw('applications_count + offers_count = workers_needed')
    ->get();

答案 1 :(得分:0)

需要job_ad.workers_。我不明白,但这应该可以给您一个想法

 $jobs = JobAd::whereHas('applications', function($q){
        $q->where('status', true);
    })->whereHas('offers', function($q){
        $q->where('status', true);
    })->get();