Listing Le città non nel database in CakePHP
-
29-09-2019 - |
Domanda
Ho un'applicazione in CakePHP in cui sono elencate le imprese. Ho un modello di business / regolatore, così come un modello di state_list / regolatore. Tuttavia voglio essere più dettagliato in modo che quando un utente fa clic su una pagina Stato, elenca tutte le città in questo Stato particolare, che le imprese sono elencati.
Poi, quando si fa clic su una città particolare, poi mostra una pagina che elenca tutte le imprese in quel particolare città.
Come potrei essere in grado di fare questo senza una tabella del database di un elenco di tutte le città?
Soluzione
A questo scopo una struttura di database migliore sarebbe qualcosa sulla falsariga di questo:
Table: Location
id
parent_id
name
type
Table: Business
id
location_id
...
I tuoi città e gli stati dovrebbero formare una albero :
America
California
San Francisco
New York
...
Japan
Tokyo
...
Ad esempio:
Business ( ..., location_id => 5, ... )
Location ( id => 5, parent_id => 2, name => San Francisco, type => city )
Location ( id => 2, parent_id => ..., name => California, type => state )
In questo modo ogni azienda appartiene ad una città e implicitamente ad uno stato e un paese come bene e tutto ha un bel id. Non è inoltre possibile fare l'errore di avere un business che è a New York, in California, il Giappone (che è attualmente possibile).
Dato quello che hai è possibile solo città di filtro attraverso una ricerca per nome:
$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);