我正在使用Laravel 5.8,我需要执行一个查询,该查询搜索一个关系中特定字段的值+另一个关系中特定字段的值是否等于主表的字段值。
更具体地说,模型是:JobAd
,Application
,Offer
,ApplicationStatus
和OfferStatus
。每个JobAd
都有一个workers_needed
字段。我想获取所有职位广告,其中应用程序的状态已批准 + 提供状态已批准的 = job_ad.workers_needed 。
每个JobAd
有很多 Application
和Offer
每个Application
属于 ApplicationStatus
每个Offer
属于 Offerstatus
每个ApplicationStatus
和OfferStatus
均已批准,其值为布尔值
答案 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();