【问题标题】:Laravel Distinct CountLaravel 不重复计数
【发布时间】:2024-05-18 13:35:02
【问题描述】:

有什么方法可以使用 laravel 使这个查询工作? DB::raw 或 Eloquent 用法无关紧要。

SELECT count(DISTINCT name) FROM tablename;

这是我尝试过但无法获得正确输出的方法:

EloquentTableName::select(DB::raw('count(DISTINCT name) as name_count'))->get();

这会返回类似这样的内容,我想解决这个问题:

([{"name_count":"15"}])

我只想数 15。

【问题讨论】:

  • 你能解释一下当前输出和预期输出之间的区别吗?
  • @GoudaElalfy 我只需要获取 int 值。我需要 15 个。我得到的是 "name_count":"15"
  • 如果你用->only("name_count")而不是->get()呢?

标签: php database laravel eloquent


【解决方案1】:

您可以通过这种方式简单地将 get 替换为 count:

$count = DB::table('tablename')->count(DB::raw('DISTINCT name'));

也可以:

DB::table('tablename')->distinct('name')->count('name');

【讨论】:

    【解决方案2】:
    DB::table('tablename')->distinct()->count('name');
    

    是正确的答案。

    ->distinct('name') 在 Laravel 中不起作用

    【讨论】:

      【解决方案3】:

      您可以简单地执行以下操作:

      Tablename::distinct()->count('name');
      

      【讨论】:

        【解决方案4】:

        你可以像蜂蜜一样顺利地做到这一点

        Modal::('yourTable')->distinct()->count('yourAttribute')
        

        它将获取“yourAttribute”的唯一计数。

        【讨论】: