【问题标题】:How to use paginate in this query laravel如何在此查询 laravel 中使用分页
【发布时间】:2017-07-03 16:14:05
【问题描述】:

如何为这个查询使用分页?

$listings = DB::table('listings')
                ->selectRaw('*, ( 3959 * acos( cos( radians(' . $lat . ') ) * cos( radians( latitude ) ) * cos( radians( longitude ) - radians(' . $lng . ') ) + sin( radians(' . $lat .') ) * sin( radians(latitude) ) ) ) AS distance')
                ->having('distance', '<', $distance)
                ->orderBy('distance')->paginate(10);

我试过 paginate(10) 还是不行。

错误: SQLSTATE [42S22]:未找到列:1054 未知列“距离”在“有子句”中(SQL:选择计数(*)作为来自 listings 的聚合,具有 distance

【问题讨论】:

  • 对此我不太确定。不过,你可以试试。 '*, ( 3959 * acos( cos( radians(' . $lat . ') ) * cos( radians( latitude ) ) * cos( radians( longitude ) - radians(' . $lng . ') ) + sin( radians(' . $lat .') ) * sin( radians(latitude) ) ) ) AS distance' having distance &lt; ' . $distance 并删除 -&gt;having('distance', '&lt;', $distance)
  • 试试这个链接stackoverflow.com/questions/40194120/…希望你能得到解决方案

标签: mysql sql laravel laravel-5 pagination


【解决方案1】:

$distance 必须是一个变量,并且它应该具有您传递 $distance 的值的值 应该是这样的

$listings = DB::table('listings')
            ->selectRaw('*, ( 3959 * acos( cos( radians(' . $lat . ') ) * cos( radians( latitude ) ) * cos( radians( longitude ) - radians(' . $lng . ') ) + sin( radians(' . $lat .') ) * sin( radians(latitude) ) ) ) AS distance')
           ->having('distance', '<', 100)
           ->orderBy('distance')
           ->paginate(10);

【讨论】:

  • 我不认为这不是解决方案。问题是 laravel 查询不识别距离别名。
猜你喜欢
  • 2017-10-20
  • 2019-02-03
  • 2015-07-31
  • 2018-11-17
  • 1970-01-01
  • 1970-01-01
  • 2020-01-23
  • 2018-09-28
  • 2013-05-30
相关资源
最近更新 更多