gpt4 book ai didi

laravel - 当表中不存在列时如何将 paginate() 与having() 子句一起使用

转载 作者:行者123 更新时间:2023-12-02 10:40:13 24 4
gpt4 key购买 nike

我有一个棘手的案例......

以下数据库查询不起作用:

DB::table('posts')
->select('posts.*', DB::raw($haversineSQL . ' as distance'))
->having('distance', '<=', $distance)
->paginate(10);

失败并显示消息:列距离不存在。

当 paginate() 尝试使用 来计算记录数时会发生错误

select count(*) as aggregate from {query without the column names}

由于列名称被删除,距离未知并引发异常。

在这种情况下,有人有办法可以使用分页吗?

谢谢

最佳答案

您可以在WHERE部分计算距离:

DB::table('posts')
->whereRaw($haversineSQL . '<= ?', [$distance])
->paginate(10);

如果您的应用程序中需要距离值,则必须计算两次:

DB::table('posts')
->select('posts.*', DB::raw($haversineSQL . ' as distance'))
->whereRaw($haversineSQL . '<= ?', [$distance])
->paginate(10);

关于laravel - 当表中不存在列时如何将 paginate() 与having() 子句一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19349397/

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