Trips hasMany LegsFind() eine von jedem passenden Feld CakePHP
Flughäfen hat keine Assoziationen
Wie kann ich die günstigste Reise für jeden Zielflughafen mit CakePHP finden?
Im Moment ist das einzige, was ich mir vorstellen kann, durch eine Reihe von Flughäfen zu foreach. Dies würde Hunderte von Anfragen an die Datenbank erfordern (was meiner Meinung nach nicht der schnellste Weg ist, dies zu tun).
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;
}
}
Außerdem glaube ich, dass dieser Datentyp Material im Modell pro CakePHP Konventionen (Fat Modelle, Skinny-Controller) sein sollte. Ich lese, dass, um eine andere Modellfunktion wie getAirports aufzurufen, kann ich loadModel verwenden, aber ich fand, dass in CakePHP Controller-Abschnitt. Wie sollte man die Daten/Modell-Funktion eines anderen Modells in andere integrieren?
Danke!
In dem Code, den Sie zur Verfügung gestellt haben, durchlaufen Sie $ airports, verwenden aber nirgends $ airport. Sie führen dieselbe Abfrage immer wieder aus. Vermissen Sie eine Bedingung? – RabidFire
Ja, der Code, den ich gepostet habe, ist definitiv nur ein Ausgangspunkt und früher war ich erschöpft, als ich ihn gepostet habe. Ich werde versuchen, das Ding wieder herauszufinden und vielleicht etwas anderes zu bearbeiten/bearbeiten, wenn ich es nicht verstehe. Danke fürs Kommentieren. – JohnAllen