2016-11-20 21 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'); 
} 

私の質問は、どのような関係私は、ユーザーのサブスクリプションから(ユーザーに属する)ページ分割後のモデルのリストを取得するために使用すべきですか?

答えて

0

ような何かを行うことができます。あなたがマニュアルにquerying relationship existenceの詳細を読むことができ

// 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); 

:あなたのPostモデルを仮定すると、あなたのコードは次のようになり、定義されたuser関係を持っています。

+1

ありがとうございます!完璧に動作します。 – Biskotaki

0

あなたはあなたが関係に基づいてフィルタリングするwhereHasメソッドを使用することができ、この

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

またはいずれかの条件なし

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

サブスクリプションとサブスクライバのリレーションメソッドがUserモデルの一部であるため、これはどのように機能しますか? – Biskotaki

+0

ユーザーが購読しているすべての投稿を取得する必要があります。右 ? – Samay

+0

私は、ユーザーが購読しているすべてのアカウントからの投稿の一覧を改ページしたいと思います。 – Biskotaki

関連する問題