Laravel:取(1)->计数();这是什么意思?

Laravel: take(1)->count(); what does this mean?

我正在研究一个包的源代码,rtConner/laravel-tagging. In this package there is a trait called TaggableTrait。在第 179 行,在一个名为 addTag() 的方法中,有一行我不明白:

$previousCount = $this->tagged()->where('tag_slug', '=', $tagSlug)->take(1)->count();

这条线是做什么的?具体来说,我的问题是 ->take(1)->count(); 部分,我们是否从 where 子句中取出 1 个条目然后计算它?

来自 Laravel 文档:

take(int $value)

Alias to set the "limit" value of the query.

所以基本上你所做的就是用 Query Builder 构造一个查询,你实际上是在说:

Select count of all tags, where tag_slug is $tagSlug and return the first row

等于

SELECT COUNT(*) FROM tags WHERE tag_slug = 'blabla' LIMIT 1

因为 COUNT() 是聚合函数,它总是 return 一行(匹配 where 条件的所有行的计数),所以 ->take(1) 是过时的并且会给你相同的有或没有它的结果。