2016-05-04 24 views
0

私は楽しみのためのブログを構築しています。私のブログには、ユーザー、投稿、および定義済みカテゴリの固定リストがあります。投稿カテゴリとユーザーの設定でLaravelのブログを構築する

1)投稿は多くのカテゴリに属します。 2)ユーザーはカテゴリ設定を指定できるため、多くのカテゴリに属します。

私は、これは多対多の関係のシリーズとして設定している:User.php

Post.php

/** 
* A user belongs to many categories 
*/ 
public function categoryPreferences() 
{ 
    return $this->belongsToMany('App\Category'); 
} 

/** 
* A Post Can Have Many Likes 
* 
* @return \Illuminiate\Database\Eloquent\Relations\belongsToMany 
*/ 

public function categories() 
{ 
return $this->belongsToMany('App\Category'); 
} 

そして各の逆数Category.php

/** 
* A category belongs to many users 
*/ 
public function users() 
{ 
return $this->belongsToMany('App\User'); 
} 

/** 
* A category belongs to many posts. 
* 
* @return \Illuminiate\Database\Eloquent\Relations\belongsToMany 
*/ 

public function posts() 
{ 
return $this->belongsToMany('App\Post'); 
} 

私はそれぞれの関係をサポートするために対応するcategory_postcategory_userの結合テーブルを持っています。しかし、私はこれについて間違って考えているかもしれません。

ユーザーが指定したカテゴリに属する​​投稿のループを表示したいが、それを行う方法では作業できない。

$categories = $user->categoryPreferences->pluck('id');

と投稿のために同じことを行うことができます:私は簡単で、ユーザーのカテゴリの嗜好を収集することができ

$categories = $post->categories->pluck('id')

をしかし、私は一緒に2つのコレクションをマージする方法がわかりませんよ。私は多型を調べましたが、それは全く正しいとは思われません。誰かが正しいコンセプトに向かって私を向けることができますか?

答えて

0

私はORMの代わりにQuery Builderをよく使うと思いますが、コードは読み書きに優れています。

0

関係$user->categoryPreferencesは、対応するユーザーのピボットテーブルにエントリを持つカテゴリモデルのコレクションを提供します。

このコレクションの各カテゴリモデルを繰り返し、コレクションのeach()メソッドを使用して投稿にアクセスできます。 Laravel Documentationから

コレクション内の項目を超えるザ・各方法の反復処理し、コールバックに各項目を渡します(お使いの場合)

$user->categoryPreferences->each(function ($category, $key) { 
    echo $category->post; 
}); 

これはあなたを想定していますカテゴリモデルの事後関係を定義している。重複する投稿を除外することも忘れないでください。

関連する問題