Laravel 不重复计数
Posted
技术标签:
【中文标题】Laravel 不重复计数【英文标题】:Laravel Distinct Count 【发布时间】:2016-06-22 11:13:38 【问题描述】:有什么方法可以使用 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()
呢?
【参考方案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”的唯一计数。
【讨论】:
以上是关于Laravel 不重复计数的主要内容,如果未能解决你的问题,请参考以下文章