Laravel:take(1) - > count();这是什么意思?

时间:2015-05-26 07:18:10

标签: laravel eloquent relationship

我正在研究软件包的源代码rtConner/laravel-tagging。在这个包中有一个叫做TaggableTrait的特征。在第179行,在一个名为addTag()的方法中,有一条我不明白的行:

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

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

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,无论是否有相同的结果都会给出。