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

标签 laravel eloquent relationship

我正在研究一个包的源代码,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/

相关文章:

database - 与模型属性的 where 条件的 Eloquent 关系

php - 基于 Eloquent 模型创建后代类

mysql - 试图找出我的 SQL 表之间的关系

laravel - php工匠路线上的ReflectionException错误

laravel - 为什么我的 Laravel 表单验证失败并路由到不同的页面?

php - 使用 Composer 在 Windows 8.1 上安装 Laravel

Laravel 对同一个表的两个引用

laravel - Laravel 5.4 中的保存问题

php - 为什么在 Eloquent 模型中调用方法时得到 'Non-static method should not be called statically'?

swift - 如何将多个 View Controller 链接到同一个导航教程