2014-08-30 104 views
1

如何计算具有很多关系的行数。Laravel计数中的行数有很多关系

的数据库建立像这样的例子:

用户: USER_ID

文件: ID, 名

游客: ID, 的file_id

我想以获得属于某个用户的每个文件的总体访客总数。

我当前的代码是这样的:

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

但是,只返回文件的总量,而不是游客的总量。

+0

你有没有尝试过Auth :: user() - > files() - >('Visitors') - > count()'? – 2014-08-30 14:09:00

+0

@AmitGarg同样,返回属于用户的文件数量,而不是访问者总数。 – Muggles 2014-08-30 14:23:25

+1

使用'hasManyThrough'完成此操作,然后简单地使用'$ user-> visitors() - > count()' – 2014-08-30 14:55:14

回答

2

既然你有级联关系:

User hasMany File hasMany Visitor

最简单的方法与User工作 - Visitor关系将是hasManyThrough

// User model 
public function visitors() 
{ 
    return $this->hasManyThrough('Visitor', 'File'); 
} 

然后,所有你需要得到用户的所有文件游客'count is:

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