我正在尝试进行查询,以便在laravel中连续获取新闻评论的数量。
News Table
News_Comments Table
Display count of comments in 'Kommentare'
这是mysql中的查询。
SELECT news.Id,news.title,news.body,news.created_at, COUNT(news_comments.id) AS Kommentare
FROM news
LEFT JOIN news_comments ON news_comments.fk_news_id = news.id
GROUP BY news.id
我如何在laravel 5.5中写出来?
非常感谢!
答案 0 :(得分:0)
为新闻表名News
制作模型,为评论表名Comment
制作另一个模型。然后在您的新闻模型中,定义一个{ - 1}}关系方法,如 -
hasMany()
然后在你的控制器中,像这样检索 -
public function comments(){
return $this->hasMany(Comment::class);
}
这将加载$newses = News::with('comments')->get();
所有评论的all
新闻。如果您想加载带有corresponding
条评论的single
新闻,那么 -
all
要获得评论$news = News::with('comments')->where('id',$news_id)->first();
,您可以{ - 1}}关系 -
count
答案 1 :(得分:0)
您必须设置新闻和新闻评论之间的关系。
在新闻模型中,假设news_comments
位于NewsComment
模型中,位于App文件夹中。设置关系:
public function newsComments()
{
return $this->hasMany('App\NewsComment', 'fk_news_id');
}
然后,要获得计数,您可以使用count()
方法:
$count = $news->newsComments()->count();
或者,直接使用刀片:
{{ $news->newsComments()->count() }}