【问题标题】:Laravel count and raw sql count gives different valuesLaravel 计数和原始 sql 计数给出不同的值
【发布时间】:2018-09-17 10:06:35
【问题描述】:

当我在原始 sql 中运行此查询时:

select count(postsid) as total, postsid
from posts
where postsid = 110
group by postsid

total 的值是 2971(这是正确的),但是何时尝试通过关系与 Laravel 执行此操作:

$item->posts->count('postsid')

返回的值是 30934(这是错误的)。是我用错了函数还是其他地方有问题?

【问题讨论】:

    标签: sql laravel-5 eloquent


    【解决方案1】:

    我认为你错过了where 条件和group by

    $item->posts
        ->select('posts.*', DB::raw('count(postsid) as total, postsid'))
        ->where('postsid', '=', 110)
        ->group_by('postsid')
        ->get();
    

    【讨论】:

    • 谢谢!这行得通。我尝试将它添加到 with function Item::with(['posts' => function($query) { // select and where }]) 中,但没有成功
    【解决方案2】:

    好吧,你在 laravel 查询中缺少postsid = 110

    应该是$item->posts->count('postsid',110)

    【讨论】:

    • 我从未在文档中看到第二个参数是可能的,尝试过但没有用。
    【解决方案3】:

    这是因为 COUNT(ID) 仅返回非空记录数的计数。 或者 试试下面的

    $item->posts->distinct('postsid')->count('postsid')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-03
      • 2014-11-21
      • 2020-12-01
      • 2014-04-03
      • 1970-01-01
      • 2021-10-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多