Magento2 在 collection->setOrder 中添加自定义值
Magento2 add custom values in collection->setOrder
我需要在 collection 的 setOrder() 中添加一些自定义值,但它不起作用。
$collection->setOrder("((lat - ".$lat.")*(lat - ".$lat.")) + ((lng - ".$lng.")*(lng - ".$lng."))", 'ASC');
我的 collection 查询的最后部分是这样的:
ORDER BY ((lat - -34.9226513)*(lat - -34.9226513)) + ((lng - 138.6094486)*(lng - 138.6094486)) ASC
您应该尝试去掉 $lat
和 $lng
变量中的减号,以便正确连接它们。
类似这样的东西(未经测试)。
$latString = '(lat'. (($lat >= 0) ? '-' : '+').abs($lat).')';
$lngString = '(lng'. (($lng >= 0) ? '-' : '+').abs($lng).')';
$collection->setOrder($latString.'*'.$latString.'+'.$lngString.'*'.$lngString, 'ASC');
我需要在 collection 的 setOrder() 中添加一些自定义值,但它不起作用。
$collection->setOrder("((lat - ".$lat.")*(lat - ".$lat.")) + ((lng - ".$lng.")*(lng - ".$lng."))", 'ASC');
我的 collection 查询的最后部分是这样的:
ORDER BY ((lat - -34.9226513)*(lat - -34.9226513)) + ((lng - 138.6094486)*(lng - 138.6094486)) ASC
您应该尝试去掉 $lat
和 $lng
变量中的减号,以便正确连接它们。
类似这样的东西(未经测试)。
$latString = '(lat'. (($lat >= 0) ? '-' : '+').abs($lat).')';
$lngString = '(lng'. (($lng >= 0) ? '-' : '+').abs($lng).')';
$collection->setOrder($latString.'*'.$latString.'+'.$lngString.'*'.$lngString, 'ASC');