Laravel count 中的行数有很多关系

Posted

技术标签:

【中文标题】Laravel count 中的行数有很多关系【英文标题】:Laravel count number of rows in has many relationship 【发布时间】:2014-10-24 08:02:59 【问题描述】:

如何计算多关系中的行数。

数据库是这样设置的,例如:

users:
user_id

files:
id,
name

visitors:
id,
file_id

我想获取属于某个用户的每个文件的总访问者总数。

我当前的代码是这样的:

$visitors = Auth::user()->files()->with('Visitors')->get();
$visitors = $visitors->count('visitor.id');

但这只会返回文件的总数,而不是访问者的总数。

【问题讨论】:

你试过Auth::user()->files()->with('Visitors')->count()吗? @AmitGarg 是的,再次返回属于用户的文件数量,而不是访问者的总数。 使用hasManyThrough,然后简单地使用$user->visitors()->count() @JarekTkaczyk_deczo_ 按预期工作。谢谢你。您可以提交作为答案吗? @JarekTkaczyk_deczo_ 你知道这对于超过 2 个级别的关系是如何实现的吗? 【参考方案1】:

因为你有级联关系:

User hasMany File hasMany Visitor

使用User - Visitor 关系的最简单方法是hasManyThrough

// User model
public function visitors()

  return $this->hasManyThrough('Visitor', 'File');

那么你需要获取用户的所有文件访问者的数量是:

$user->visitors()->count();

【讨论】:

以上是关于Laravel count 中的行数有很多关系的主要内容,如果未能解决你的问题,请参考以下文章

java中统计JTextArea中的行数有两个方法的问题!

如何提取 Count(*) 中的行数,并发送到变量。 (PL/SQL)

如何在不使用count(*)的情况下在greenplum中查找表中的行数

选择 Count (distinct col) 查询以显示结果中的行数和列数 - postgresql

csv 文件中的行数

csv 文件中的行数