Find()每个匹配字段中的一个CakePHP

Find()每个匹配字段中的一个CakePHP,cakephp,model,find,Cakephp,Model,Find,旅行有很多腿 机场没有协会 如何使用CakePHP找到每个目的地机场最便宜的行程 现在,我能想到的唯一一件事就是穿过一系列机场。这需要对数据库进行数百次查询(我认为这不是最快的方式) 此外,我认为这种数据类型的东西应该按照CakePHP约定(胖模型、瘦控制器)放在模型中。我读过这篇文章,为了调用不同模型的函数,比如getAirports,我可以使用loadModel,但我在CakePHP的控制器方法部分中发现了这一点。一个模型如何将另一个模型的数据/模型函数导入到另一个模型中 谢谢 如果您现在正

旅行有很多腿

机场没有协会

如何使用CakePHP找到每个目的地机场最便宜的行程

现在,我能想到的唯一一件事就是穿过一系列机场。这需要对数据库进行数百次查询(我认为这不是最快的方式)

此外,我认为这种数据类型的东西应该按照CakePHP约定(胖模型、瘦控制器)放在模型中。我读过这篇文章,为了调用不同模型的函数,比如getAirports,我可以使用loadModel,但我在CakePHP的控制器方法部分中发现了这一点。一个模型如何将另一个模型的数据/模型函数导入到另一个模型中


谢谢

如果您现在正在寻找更好的算法rigth,我没有解决方案

我的是一个设计解决方案:基本上你应该在你的目的地机场添加一个字段,该字段将在你每次添加新航班时更新,这样你就可以在你的目的地记录中直接获得你的信息


如果我理解了你的问题,这就站得住脚了。我不是英国人,所以我不熟悉与旅行相关的“腿”的语义(对我来说,它是身体的一部分)

如果你正在寻找更好的算法,那么现在我没有解决方案

我的是一个设计解决方案:基本上你应该在你的目的地机场添加一个字段,该字段将在你每次添加新航班时更新,这样你就可以在你的目的地记录中直接获得你的信息


如果我理解了你的问题,这就站得住脚了。我不是英国人,所以我不熟悉与旅行相关的“腿”的语义(对我来说,腿是身体的一部分)

你要解决的问题是旅行推销员的问题:

从我所读到的谷歌地图是如何做到这一点的,你需要预先计算你最常见的路由和连接。将预计算的信息保存在廉价缓存中(memcache-prolly)。基本上,您无法每次都重新计算,所以请计算一些常见的,并构建一个预计算缓存


通过这个算法,一些谷歌搜索将成为你的朋友,为你提供一些提示和技巧。这个问题已经解决了很多次(没有一个是精确的计算效率,这就是为什么您应该预计算和缓存)。

您正在解决的问题是旅行推销员问题:

从我所读到的谷歌地图是如何做到这一点的,你需要预先计算你最常见的路由和连接。将预计算的信息保存在廉价缓存中(memcache-prolly)。基本上,您无法每次都重新计算,所以请计算一些常见的,并构建一个预计算缓存


通过这个算法,一些谷歌搜索将成为你的朋友,为你提供一些提示和技巧。这个问题已经解决了很多次(没有一个是精确的计算效率,这就是为什么您应该预计算和缓存)。

可以找到第二个问题“如何在另一个模型中加载模型?”的答案。

第二个问题“如何在另一个模型中加载模型”的答案可以找到。

在您提供的代码中,您在$airport中循环,但在任何地方都没有使用$airport。您一遍又一遍地执行相同的查询。你缺少一个条件吗?是的,我发布的代码肯定只是一个起点,早些时候我发布它时已经筋疲力尽了。我会再次尝试解决这个问题,如果我无法得到它,可能会发布/编辑其他内容。感谢您的评论。在您提供的代码中,您正在$airport中循环,但在任何地方都没有使用$airport。您一遍又一遍地执行相同的查询。你缺少一个条件吗?是的,我发布的代码肯定只是一个起点,早些时候我发布它时已经筋疲力尽了。我会再次尝试解决这个问题,如果我无法得到它,可能会发布/编辑其他内容。谢谢你的评论。实际上我只是想找到独特的目的地。比如,从机场出发,寻找到每个可能目的地最便宜的航班。我对这个问题解释得不好;部分原因是这对我来说很难。我实际上只是想找到独特的目的地。比如,从机场出发,寻找到每个可能目的地最便宜的航班。我对这个问题解释得不好;部分原因是对我来说这是一个困难的过程。
function getCheapestTrip($origin){

$airports=$this->Airport->getAirports();
foreach($airports as $airport):
$cheapest_flights=$this->Trip->find('first', 
array(
'conditions'=>array('Leg.origin'=>$origin, 'MIN(Trip.price) as price'),
'fields'=>array('Trip.origin','price','Leg.destination','Leg.depart','Leg.arrive'),
'recursive'=>2,
));
 endforeach;
}
}