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

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');
);

【讨论】:

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

如何实现EXCEL自动判定单元格是奇数还是偶数,并且自动填充颜色?

你会使用 num%2 还是 num&1 来检查一个数字是不是是偶数?

如何检查整数是偶数还是奇数? [关闭]

PHP 如何检查数字是奇数还是偶数

如何检查一个数字是奇数还是偶数

如何检查循环计数? (以及它是偶数还是奇数)[重复]