sql - Eloquent 计数具有嵌套预加载的嵌套关系

标签 sql laravel orm eloquent eager-loading

您一定见过以下功能(在 Facebook 上),一篇带有一些评论的帖子,每条评论都有一个点赞计数器。

https://img4.hostingpics.net/pics/67853820170616003640LaravelNewsAccueil.png

在 Laravel 中,它会是这样的

  • 帖子有很多评论
  • 评论属于帖子
  • 评论喜欢属于用户
  • 评论喜欢属于评论
  • 评论有很多评论喜欢

所以,现在我想要获得 10 个带有评论的帖子,每个评论都有一个点赞计数器。

Post::with('comments')->withCount('comments.likes')->take(10)->get();

这根本不起作用。

Post::with('comments')->withCount('comments')->take(10)->get();

这会计算每个帖子的所有评论,我想计算每个帖子的每个评论的所有点赞数。

最佳答案

试试这个

Post::with(['comments' => function($query){
   $query->withCount('likes');
}])->take(10)->get();

关于sql - Eloquent 计数具有嵌套预加载的嵌套关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44599550/

相关文章:

mysql - 在 MySQL 中选择对同一临时表的不同列的计数

Laravel:为什么每条路线都执行两次?

javascript - 如何使用 laravel ajax 发布和获取评论而不重新加载页面?

c# - Entity Framework 生成的类型不继承自 EntityObject

mysql - 在 SQL 中使用 Group By 函数时遇到问题

mysql - 我可以通过查询将值传递到 SQL 触发器吗?

performance - ORM 采用的优化

java - 如何有效地从数据库提供 i18n 消息

mysql - 用于提取具有单个日期条目的多行的 SQL 查询

php - Laravel 5.2 验证检查值是否不等于变量