2015-12-11 48 views
0

我的應用程序具有附加到Post對象的View對象(多對一)。用戶對象有許多帖子。我如何檢索本質上$totalViews = $user->posts()->views()->count();獲取用戶對象的所有Post對象上的總查看對象的數量

該語法顯然不起作用。我可以遍歷每個$ user->帖子並添加視圖,但是這似乎很慢,並且可能有更好的方法。

+0

渴望加載呢? –

+0

@PeteHouston在循環每個帖子時會阻止n + 1查詢,但它仍然需要遍歷每個可能很慢的帖子。 –

+0

如果'$ user-> posts-> views-> count()'有任何錯誤嗎? –

回答

1

我不知道如何用雄辯的關係做到這一點,但你可以分兩步來完成。

$arrayOfIds = Post::where('user_id', $id)->get('id')->toArray(); 
$totalViews = View::whereIn('post_id', $arrayOfIds)->count(); 

這可能是我能想到的最簡單的方法。

+0

感謝大家,現在可以使用。 –

+0

對於任何可能需要它的人,我會使用'$ posts = DB :: table('posts') - > where('user_id',1) - > lists('id');'獲取數組因爲這會返回一個整數數組而不是一個對象數組 –