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)
是过时的并且会给你相同的有或没有它的结果。
我正在研究一个包的源代码,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)
是过时的并且会给你相同的有或没有它的结果。