2017-11-03 6 views
0

私はユーザー、カテゴリ、投稿のモデルを持っています。投稿は多くのユーザーと多くのカテゴリに属します。ユーザーとカテゴリは関連していません。私はuser_idとcategory_id、そしてそのテーブルのモデルCategoryBlockを格納するカスタムピボットテーブルを作成しました。ユーザーがブロックしなかった投稿をすべて取得するにはどうすればよいですか?Laravel:どのカテゴリがブロックされていないすべての投稿を表示するには?

+0

それはポストは、ユーザーに属し、ユーザーが多くのポストを持っているだろうとされるわけではないポストを取得し、その後、すべてのブロックのカテゴリを取得することです。一方、投稿はカテゴリに属し、カテゴリには多くの投稿があります。 –

+0

あなたの関係は最初に間違っています。ポストは多くのユーザーに属しています。多くのユーザーがポストユーザーにピボットする必要があります。 – DorienCragen

+0

@DorienCragen 1人のユーザーに多数のポストがあります。それが多対多の関係だった場合、1つの投稿に多くの著者がいて、私が望んでいないだろう。 –

答えて

0

最も簡単な方法は、このコレクション

EDITに

$block = DB::table('category_block')->where('user_id', Auth::user()->id)->get()->pluck(['category_id'])->toArray(); 

$posts = Post::whereNotIn('category_id', $block)->get(); 
+0

これが私の必要なことです。ありがとう。しかし、今では、すべてのユーザIDを取得しようとすると「非オブジェクトのプロパティを取得しようとしています」というエラーが表示されます。 –

+0

これはユーザとセッションをログオンしていると仮定しているため、 'Auth :: user() - > id'実際の有効なuser_id – DorienCragen

関連する問題