Listing Städte nicht in der Datenbank in CakePHP
-
29-09-2019 - |
Frage
ich eine Anwendung in CakePHP Unternehmen, dass die Listen haben. Ich habe ein Geschäftsmodell / Controller sowie ein state_list Modell / Controller. Allerdings mag ich so mehr detailliert sein, wenn ein Benutzer klickt auf einer Status-Seite, es alle Städte, in diesem bestimmten Staat führt, dass die Unternehmen in aufgeführt sind.
Dann, wenn sie eine bestimmte Stadt klicken Sie zeigt dann eine Seite in dieser bestimmten Stadt, um die Unternehmen auflistet.
Wie würde ich dies tun können, ohne eine Datenbanktabelle aus einer Auflistung aller Städte?
Lösung
Zu diesem Zweck eine bessere Datenbankstruktur etwas entlang der Linien von dieser wäre:
Table: Location
id
parent_id
name
type
Table: Business
id
location_id
...
Ihre Städte und Staaten sollten bilden einen Baum :
America
California
San Francisco
New York
...
Japan
Tokyo
...
Zum Beispiel:
Business ( ..., location_id => 5, ... )
Location ( id => 5, parent_id => 2, name => San Francisco, type => city )
Location ( id => 2, parent_id => ..., name => California, type => state )
Auf dieser Weise jedes Unternehmen zu einer Stadt gehört, und implizit in einen Zustand und ein Land, wie gut und alles hat eine schöne ID. Sie können auch nicht den Fehler machen, ein Geschäft zu haben, die in New York ist, Kalifornien, Japan (die derzeit möglich ist).
Nach dem, was Sie haben können Sie nur Filter Städte über einen Namen suchen:
$listOfBusinessesInState = $this->Business->find('all', array(
'conditions' => array('Business.state_id' => $state_id),
'fields' => array('Business.city'),
'group' => array('Business.city')
));
$listOfCitiesInState = Set::extract('/Business/city', $listOfBusinessesInState);