我有个棘手的案子...

Following database query does not work:

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

It fails with message: column distance does not exist.

当paginate()try 使用

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

由于列名被剥离,距离未知,因此会引发异常.

Does somebody have a work around to be able to use pagination is this case ?

谢谢

推荐答案

You can calculate the distance in the WHERE part:

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

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

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

Laravel相关问答推荐

当未通过验证的字段是值数组时,Laravel$validator->;validator()方法不会引发异常

Livewire 3软件包开发

Laravel 9 中使用 WHERE 子句的列的 SUM

导出所有客户端不起作用,文件保存时没有名称和扩展名

mysql 加入 ON 和 AND 到 laravel eloquent

仅针对字母的 laravel 验证规则

集成测试模拟外观与注入模拟

通过单击按钮保存 PhpSpreadSheet

在 Laravel Blade 中转义 vue.js 数据绑定语法?

计算laravel中查询返回的行数

导航栏品牌中的 Laravel 动态页面标题

如何在 Laravel 5.1 中为Electron邮件添加标题

加载模型的所有关系

laravel 搜索多个以空格分隔的单词

Laravel 的 toSql() 方法是否会屏蔽 id? (列值被问号替换)

在 Laravel 的数据透视表中添加 id 列有什么好处?

Laravel 事件、监听器、作业(job)、队列之间的区别

Laravel homestead IP地址不起作用

如何以及在哪里可以使用 laravel 存储图像?

Laravel Eloquent 模型属性