如何检查模型是不是有偶数条相关记录?

Posted

技术标签:

【中文标题】如何检查模型是不是有偶数条相关记录?【英文标题】:How to check if model has even number of relationed records?如何检查模型是否有偶数条相关记录? 【发布时间】:2022-01-03 01:04:23 【问题描述】:

我有具有hasMany 关系的用户模型,我需要编写一个查询并只获取那些具有偶数关联记录的用户。

是否有可能以某种方式将whereHas 与 %2 条件一起使用? 还是怎么做?

【问题讨论】:

【参考方案1】:

您可以使用 withCount 和 havingRaw 来执行此操作:

  $usersWithEvenRelatedModel= User::withCount('relatedModels as relatedCount')
  ->havingRaw('relatedCount %2 = 0')->get();

【讨论】:

【参考方案2】:

您可以通过一些分组/拥有和原始查询来做到这一点:

$userWithEvenRelations = User::whereHas('related', function ($q) 
   $q->groupBy('user_id')->havingRaw('MOD(COUNT(user_id), 2) = 0');
);

【讨论】:

以上是关于如何检查模型是不是有偶数条相关记录?的主要内容,如果未能解决你的问题,请参考以下文章