2016-11-20 45 views
0

在我的應用程序中,我已經通過名爲subscriptions的數據透視表建立了一個用戶模型,該模型可以具有訂閱者和訂閱。如何從用戶的訂閱中獲得所有帖子

public function subscribers() 
{ 
    return $this->belongsToMany('Forum\User', 'subscriptions', 'subscription_id', 'subscriber_id'); 
} 

public function subscriptions() 
{ 
    return $this->belongsToMany('Forum\User', 'subscriptions', 'subscriber_id', 'subscription_id'); 
} 

我的問題是,我應該用什麼關係從用戶的訂閱中獲得分頁Post模型列表(屬於用戶)?

回答

0

可以使用whereHas方法過濾器的基礎上的關係。假設你的Post模型定義的user關係,你的代碼看起來是這樣的:

// target user 
$user = \App\User::first(); 
$userId = $user->id; 

// get all of the posts that belong to users that have your target user as a subscriber 
\App\Post::whereHas('user.subscribers', function ($query) use ($userId) { 
    return $query->where('id', $userId); 
})->paginate(10); 

您可以在文檔中閱讀更多關於querying relationship existence

+1

謝謝!完美的作品。 – Biskotaki

0

你可以做這樣的事情

\App\Post::with(['subscriptions' => function ($query) { 
    $query->where('date', 'like', '%date%'); 
}])->paginate(15); 

或沒有任何條件

\App\Post::with('subscriptions')->paginate(15); 
+0

這是如何工作的,因爲訂閱和訂閱者關係方法是用戶模型的一部分? – Biskotaki

+0

您想拉取用戶已訂閱的所有帖子。對 ? – Samay

+0

我想分頁從用戶訂閱的所有帳戶的帖子列表。 – Biskotaki

相關問題