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à?

È stato utile?

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);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top