我正在研究一个包的源代码,rtConner/laravel-tagging 。在这个包中有一个名为 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()是聚合函数,它总是返回一行(与 where 条件匹配的所有行的计数),因此 ->take(1)
已过时,无论有没有它都会给你相同的结果。
关于Laravel: take(1)->count();这是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30451962/