加入laravel 5.5

时间:2018-02-02 16:28:05

标签: laravel laravel-5.5

我正在尝试进行查询,以便在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

Result of this query

我如何在laravel 5.5中写出来?

非常感谢!

2 个答案:

答案 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() }}