猿问

Laravel 比较插入的列和同一行中的另一列

我有一个商店表,我计算了这些商店位置和客户位置之间的距离,我想比较距离是否大于商店覆盖范围,然后不在列表中显示该商店我知道可以使用havingRaw,但如果我使用 \DB::table('stores') 但就我而言,我在获得所有商店后添加了距离列,现在我在刀片中使用它并且工作正常,但想知道是否可以在控制器中执行此操作


      @if($item->store_coverage >= $item->distance)


return $stores->where('distance','>',0 )->where('distance <= store_coverage')->sortBy('distance');

希望你能得到我需要的东西


Helenr
浏览 108回答 2
2回答

侃侃无极

使用集合过滤器助手$stores->filter(function&nbsp;($item,&nbsp;$key)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;$item->store_coverage&nbsp;>=&nbsp;$item->distance; });

喵喔喔

您忘记将 where 语句分解为其参数,并在查询对象上调用 sortBy,而不是结果集合。$stores->where('distance',&nbsp;'>',&nbsp;0) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;->where('distance',&nbsp;'<=',&nbsp;'store_coverage') &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;->get() &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;->sortBy('distance');
随时随地看视频慕课网APP
我要回答