laravel - Laravel在多态多对多中得到总和
问题描述
我想获得多态多对多关系的列的总和。因此,假设您有一个具有这种关系的 Post 和一个 Comment 模型,这是行不通的:
$posts = Post::withCount([
'comments as comments_priority_sum' => function ($q) {
$q->sum('comments.priority');
},
])
->orderBy('title', 'asc')
->get();
解决方案
从 laravel 8.x 开始,我们还有withSum()方法,所以你可以简单地这样做:
Post::withSum('comments', 'priority')->get();
您将在 Post 模型的每个实例中获得一个 comments_sum_priority 字段。
对于旧版本,您可以使用原始表达式:
Post::withCount(['comments as comments_sum_priority' => function($query) {
$query->select(DB::raw('sum(priority)'));
}])->get()
只是为了澄清一下,您的查询不起作用,因为查询构建器的sum聚合执行查询。
推荐阅读
- java - 如何使用 Sendgrid API 将本地文件作为邮件附件发送
- uproot - 如何使用 uproot 将带有 TVector3 分支的 TTree 加载到 Pandas DataFrame 中
- python - 如何根据嵌套列表中的元素删除列表列表的重复项
- flutter - 如何从父小部件更改一个子小部件的状态,其中子小部件是单独文件中的单独类?
- c# - 自定义验证属性
- regex - 正则表达式仅检查 3 个字符
- java - 如何在 Tomcat 启动时从 xml 读取环境变量?
- python - 在python中创建一个按钮
- python - 动态显示字典的标签连接
- c# - Facebook Graph API - IG Media 获取元数据问题