2016-11-20 80 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

相关问题