SQLSTATE[42S22]: Column not found: 1054 from laravel 7 paginate with have子句显示错误?

问题描述

return User::role('Customer')->distinct()
            ->selectRaw('`users`.*,sum(case when `orders`.`id` is not null then 1 else 0 end) as `total_order`')
            ->leftJoin('orders',function ($join) use ($from,$to) {
                $join->on('orders.user_id','=','users.id')
                    ->whereBetween('orders.created_at',[$from,$to]);
            })
            ->leftJoin('accept_deliveries',function ($join) {
                $join->on('accept_deliveries.order_id','orders.id')
                    ->on('accept_deliveries.is_complete',DB::raw('1'));
            })
            ->groupBy('users.id')
            ->having('total_order','>=',$min)
            ->having('total_order','<=',$max)
            ->orderBy('total_order')->get();

我使用完美运行的代码从表中获取所有数据但是当我使用 paginate(15) 方法而不是 get() 方法时,它显示如下错误

sqlSTATE[42S22]: Column not found: 1054 UnkNown column 'total_order' in 'having clause' (sql: select count(*) as aggregate from `users` left join `orders` on `orders`.`user_id` = `users`.`id` and `orders`.`created_at` between 2020-09-01 00:00:00 and 2021-06-12 23:59:59 left join `accept_deliveries` on `accept_deliveries`.`order_id` = `orders`.`id` and `accept_deliveries`.`is_complete` = 1 where exists (select * from `roles` inner join `model_has_roles` on `roles`.`id` = `model_has_roles`.`role_id` where `users`.`id` = `model_has_roles`.`model_id` and `model_has_roles`.`model_type` = App\User and (`roles`.`id` = 4)) group by `users`.`id` having `total_order` >= 0 and `total_order` <= 2)

我不明白为什么要这样显示?我正在使用 laravel 7 和 mariadb 10.3

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...