加入laravel 5.5

Join in 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 怎么写?

非常感谢!

为新闻 table 姓名 News 创建模型,为评论 table 姓名 Comment 创建另一个模型。然后在您的新闻模型中,定义一个 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();

要获得评论 count,您可以 count() 像 -

这样的关系
$count = News::find($news_id)->comments()->count();

您必须设置News 和NewsComments 之间的关系。 在新闻模型中,假设 news_commentsNewsComment 模型中,在 App 文件夹中。设置关系:

public function newsComments()
{
    return $this->hasMany('App\NewsComment', 'fk_news_id');
}

然后,要获得计数,您可以使用 count() 方法:

$count = $news->newsComments()->count();

或者,直接使用blade:

{{ $news->newsComments()->count() }}