关联方有很多affiliatesHistory,affiliates History属于关联方,如何进行以下查询?
以具有affiliatesHistory的附属公司为例,如果affiliates History记录计数等于1,则不采用状态为"已卸载"的affiliationsHistory。
$affiliates = $user->affiliates()
->whereDoesntHave('affiliatesHistory', function ($q) {
$q->where('affiliates_histories.status', 'Installed earlier')
->orWhere('affiliates_histories.status', 'Uninstalled / Installed earlier');
以下查询有效,但我不需要接受那些附属机构,其中affiliatesHistory计数等于1,并且状态为卸载。
任何帮助都会得到通知。
因此,据我所知,您希望获得affiliatesHistory状态为Installed early的附属公司。如果是这种情况,那么试试这个:
$user_affiliates = $user->affiliates();
$affiliates = $user_affiliates->whereHas('affiliatesHistory', function($q){
$q->where('status', 'Installed earlier');
})->get();
dd($affiliates);
对于您的情况,如果有多个affiliatesHistory
项目,则返回其他项目。如果只有一个affiliatesHistory
,则不应包含卸载状态,我想您可以使用条件计数作为获得所需结果
$affiliates = Affiliate::withCount([
'affiliatesHistory',
'affiliatesHistory as affiliatesHistoryUninstalled_count' => function ($query) {
$query->where('status', 'Uninstalled');
}
])->where('user_id', $user->id)
->havingRaw('affiliatesHistory_count > 1 OR (affiliatesHistory_count = 1 AND affiliatesHistoryUninstalled_count = 0)')
->get();