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 中的行数有很多关系的主要内容,如果未能解决你的问题,请参考以下文章
如何提取 Count(*) 中的行数,并发送到变量。 (PL/SQL)
如何在不使用count(*)的情况下在greenplum中查找表中的行数