collections - Magento2 在 collection->setOrder 中添加自定义值
问题描述
我需要在集合的 setOrder() 中添加一些自定义值,但它不起作用。
$collection->setOrder("((lat - ".$lat.")*(lat - ".$lat.")) + ((lng - ".$lng.")*(lng - ".$lng."))", 'ASC');
我的集合查询的最后一部分是这样的:
ORDER BY ((lat - -34.9226513)*(lat - -34.9226513)) + ((lng - 138.6094486)*(lng - 138.6094486)) ASC
解决方案
$lat
您应该尝试去掉and变量中的减号,$lng
以便正确连接它们。
像这样的东西(未经测试)。
$latString = '(lat'. (($lat >= 0) ? '-' : '+').abs($lat).')';
$lngString = '(lng'. (($lng >= 0) ? '-' : '+').abs($lng).')';
$collection->setOrder($latString.'*'.$latString.'+'.$lngString.'*'.$lngString, 'ASC');
推荐阅读
- java - XML 到 JSON 并返回到 Java 中的 XML
- python-3.x - 根据熊猫中给定列的值保留行
- html - 问题理解 flexbox 格式
- javascript - 可以使用计算函数作为模板中的属性值吗?Vue
- rust - 如何使生锈结构只能建造一次而不会生锈
- android - 图标更改不适用于 SwitchPreference
- llvm - LLVM:将 alloca 作为函数参数传递
- java - 将文本从一项活动转移到另一项活动
- reactjs - Reactjs 使用 Latex 渲染几何图形
- nativescript - NativeScript:运行 TNS Doctor 时仍然出现“Android SDK 未安装错误”