2017-04-16 4 views
0

私はモデル間に多くの関係があります:laravelアプリケーションの投稿とカテゴリです。私は私のコントローラ機能を示して下id以外のフィールドでデータを取得すると多くの関係があります

Route::get('posts/categories/{categoryName}','[email protected]') 

は(それがない:

public function category() { 
     return $this->belongsTo('artSite\category'); 
} 

public function posts() { 
     return $this->hasMany('artSite\post'); 
} 

は、今私はhttpリクエストに導出されている特定のカテゴリに属する​​記事を取得しようとしている:私はこれらの関係を定義しました):

public function showPostGivenCategory($categoryName) { 

    $category = category::where('category_name','=',$categoryName)-first(); 
    $posts = category::find($category->id)->posts; 
    return view('pages.homePage')->with('categories',$categories)with('posts',$posts); 

} 

このソリューションでは、2つのクエリを作成しています。 1つのクエリを作成して特定のカテゴリの投稿を検索する方法はありますか?そのような

何かが動作しません:

$posts = category::where('category_name','=',$categoryName)->posts; 

誰かがこの問題で私を助けてもらえますか?私は非常に感謝して、挨拶をするだろう。

+0

なぜあなただ​​けの要求の代わりに、名前に$ category-> IDを渡すいけませんか?次に、実際のカテゴリを検索せずにIDを直接渡すことができます。 findOrFail()を使用して、存在するカテゴリを取得したり、例外を処理したりすることもできます。あるいは、findMany([])を使用して、複数のカテゴリを同時に取得することもできます。しかし、まずカテゴリの名前の代わりにIDを渡すようにします。カテゴリはどのように選ばれていますか? – jsrosas

答えて

0

私たちは二行目を取り除くことができます。

$posts = Category::find($category->id)->posts; 

だから、あなたが言うことができます:

$posts = Category::where('category_name','=',$categoryName)->first()->posts; 
+1

ありがとうございます。それは正常に動作します;) –

関連する問題