联营公司有很多affiliatesHistory,affiliatesHistory属于联属公司,如何进行以下查询?
以附属公司为例,其中有affiliatesHistory,如果affiliatesHistory记录计数等于1,则不要采用状态为已卸载的affiliatesHistory。
$affiliates = $user->affiliates()
->whereDoesntHave('affiliatesHistory', function ($q) {
$q->where('affiliates_histories.status', 'Installed earlier')
->orWhere('affiliates_histories.status', 'Uninstalled / Installed earlier');下面的查询可以用,但我不需要接受那些affiliatesHistory计数等于1且状态为已卸载的分支机构。
任何帮助都将受到欢迎。
发布于 2021-01-13 00:12:34
所以,据我所知,你想要得到的附属公司的affiliatesHistory状态是安装较早。如果是这样的话,试试这个:
$user_affiliates = $user->affiliates();
$affiliates = $user_affiliates->whereHas('affiliatesHistory', function($q){
$q->where('status', 'Installed earlier');
})->get();
dd($affiliates);发布于 2021-01-13 02:50:52
对于您的情况,如果有多个affiliatesHistory项,则返回else如果只有一个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();https://stackoverflow.com/questions/65685736
复制相似问题