2017-12-08 32 views
1

私はこのコードの各カテゴリのすべての記事を取得することができますモデルhasMany条件との関係は?

$category->article 

は今、私はいくつかの条件を持つすべての記事(記事・テーブル内の)

私はこの

$category->article->wherePublish(1)-> 
        whereFeature('top')->latest()-> 
        take(9)->get(); 
を試しを取得したい

しかし、私はこのエラーが表示されます:

答えて

1

はクエリを実行し、コレクションを取得します。コレクションにはwherePublishなどの魔法がないため、エラーが発生しています。

あなたは、記事をフィルタリングし、この構文を使用する場合:

Article::where('category_id', $category->id) 
    ->wherePublish(1) 
    ->whereFeature('top') 
    ->latest() 
    ->take(9) 
    ->get(); 

これはhasOnehasMany関係のために動作します。 belongsToManyについてはwhere()の代わりにwhereHas()メソッドを使用してください。それを

public function filteredArticles() 
{ 
    return $this->hasMany(Article::class, 'article_id') 
     ->wherePublish(1) 
     ->whereFeature('top') 
     ->latest() 
     ->take(9); 
} 

と使用:

また、次のような別の関係を定義することができ

$category->filteredArticles 
関連する問題