gpt4 book ai didi

php - Laravel 连接表并获得用户的最大订单

转载 作者:行者123 更新时间:2023-12-04 02:02:58 25 4
gpt4 key购买 nike

我有 2 个模型 OrdersUsers,我想用 sum of total 获取订购最多的用户列表 < strong>金额

表结构

  //users
id name phone_number
1 John 1111111111
2 Mike 2222222222

//orders
id user_id total
1 1 500
2 1 450
3 2 560
4 1 850
5 2 500

//expected result
name phone_number orders amount
John 1111111111 3 1800
Mike 2222222222 2 1060

尝试了以下查询

$privilaged_users = User::leftJoin('orders', 'orders.user_id', 'users.id')
->select('name','phone_number')
->max('orders.user_id as orders')
->groupBy('orders.user_id')
->get();

获取跟随错误

    SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in
your SQL syntax; check the manual that corresponds to your MySQL server version
for the right syntax to use near 'as `orders`) as aggregate from `users` left
join `orders` on `orders`.`user_id` ' at line 1 (SQL: select
max(`orders`.`user_id` as `orders`) as aggregate from `users` left join `orders`
on `orders`.`user_id` = `users`.`id` where `users`.`deleted_at` is null)

谢谢

最佳答案

你可以把这个查询写成,

$privilaged_users = User::leftJoin('orders', 'orders.user_id',"=", 'users.id')
->select('name','phone_number',DB::raw('max(orders.total) as orders_total'))
->groupBy('orders.user_id')
->get();

作为原始查询,因为默认情况下它将整个字符串视为列

编辑

您的问题是,您正在对在聚合函数内采用的字段进行分组。

这里有一些链接来解释my concern much better .

我已经修改了代码。请检查一次。

关于php - Laravel 连接表并获得用户的最大订单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46074616/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com