2014-08-30 70 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();