对于上下文,虽然范围不限于此,但我正在使用CakePHP 2.4.4及其分页功能。这会查询结果(我相信使用ORDER,LIMIT和OFFSET),一旦返回结果,我就会计算一个字段。在这种情况下,用户输入邮政编码,并且在返回结果时,分别计算搜索邮政编码和结果邮政编码之间的地理距离。我不能这样订购,因为我一次只有一页结果。
我该如何手动执行此操作?我想我可以在查询中获得所有结果,然后为每个结果计算距离,然后是订单,然后删除不在该页面上的那些,但这看起来非常昂贵。例如,Autotrader会返回数十万个结果,并且可以按距离排序,然后计算。
数学是在我的项目中用PHP完成的,但我希望这需要移到查询中,但我认为这会使它变得昂贵。
如何通过未实际存储在数据库中的计算字段来订购所有结果?
答案 0 :(得分:1)
不确定PHP是否适合进行数学运算。特别是如果要在该表中过滤大量记录。
你可能想看一下 http://www.dereuromark.de/2012/06/12/geocoding-with-cakephp/
你似乎正在处理距离问题。 在那篇文章中,整个计算直接在SQL中完成 - 使用虚拟字段和通过行为的干净方法。 试着让这个工作。这将使您不仅可以轻松地使用距离或纬度/场地,还可以保持干燥。
包括排序和过滤。
答案 1 :(得分:0)
如果您正在进行复杂计算,请将代码移至商店过程。