编程语言
首页 > 编程语言> > php – 使用预先加载来获取给定文章中的所有相关文章

php – 使用预先加载来获取给定文章中的所有相关文章

作者:互联网

我想根据类别获取特定文章的所有相关文章.

我有条款和类别之间的关系

Article.php

public function category(){

    return $this->belongsTo(ArticleCategory::class,'category_id','id');

}

ArticleCategory.php

 public function articles(){

    return $this->hasMany(Article::class,'category_id','id');

}

ArticleController.php

public function singleArticle(Article $article){

    //I want to convert this statement to eager loading statement

    $relatedArticles = $article->category->articles;

    return view('pages/article',compact('article','relatedArticles'));

}

解决方法:

如果你想获得相关文章,你也可以使用whereHas():

$relatedArticles = Article::whereHas('category', function($q) use($article) {
    $q->where('id', $article->category_id);
})
->get();

如果要将所有内容加载到一个集合中:

$relatedArticles = Article::with(['category.articles' => function($q) use($article) {
    $q->where('id', $article->category_id);
}])
->get();

标签:php,laravel,laravel-5,laravel-5-5
来源: https://codeday.me/bug/20190627/1305063.html