我正在研究软件包的源代码rtConner/laravel-tagging。在这个包中有一个叫做TaggableTrait的特征。在第179行,在一个名为addTag()的方法中,有一条我不明白的行:
$previousCount = $this->tagged()->where('tag_slug', '=', $tagSlug)->take(1)->count();
这条线做什么?具体来说,我的问题是->take(1)->count();
部分,我们从where子句中取出1个条目然后计算它吗?
答案 0 :(得分:4)
来自Laravel文档:
take(int $ value)
用于设置查询的“限制”值的别名。
所以你基本上所做的就是用Query Builder构建一个查询,你真的在说:
选择所有标签的计数,其中tag_slug为$ tagSlug并返回第一行
等于
System.Int32
由于COUNT()是聚合函数,它将始终返回一行(与where条件匹配的所有行的计数),因此SELECT COUNT(*) FROM tags WHERE tag_slug = 'blabla' LIMIT 1
是obselote,无论是否有相同的结果都会给出。