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

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

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

【问题讨论】:

    标签: php laravel laravel-8 query-builder laravel-query-builder


    【解决方案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');
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-08-25
        • 1970-01-01
        • 1970-01-01
        • 2014-07-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多