Laravel count 中的行数有很多关系

Mug*_*les 3 php mysql laravel eloquent laravel-4

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

例如,数据库设置如下:

users:
user_id

files:
id,
name

visitors:
id,
file_id
Run Code Online (Sandbox Code Playgroud)

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

我目前的代码是这样的:

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

但这仅返回文件总数,而不返回访问者总数。

Jar*_*zyk 5

由于您有级联关系:

User hasMany File hasMany Visitor

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

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

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

$user->visitors()->count();
Run Code Online (Sandbox Code Playgroud)