Question

J'ai une application dans CakePHP que les entreprises listes. J'ai un modèle / contrôleur affaires, ainsi qu'un modèle state_list / contrôleur. Cependant, je veux être plus détaillé afin lorsqu'un utilisateur clique sur une page d'État, il énumère toutes les villes de cet État particulier que les entreprises sont énumérées dans.
Puis, quand ils cliquent sur une ville particulière, puis affiche une page répertoriant toutes les entreprises dans cette ville particulière.
Comment pourrais-je être en mesure de le faire sans une table de base de données d'une liste de toutes les villes?

Était-ce utile?

La solution

A cet effet, une meilleure structure de base de données serait quelque chose le long des lignes de ceci:

Table: Location
id
parent_id
name
type

Table: Business
id
location_id
...

Vos villes et les États devraient former un arbre :

America
   California
      San Francisco
   New York
      ...
Japan
   Tokyo
      ...

Par exemple:

Business ( ..., location_id => 5, ... )
Location ( id => 5, parent_id => 2, name => San Francisco, type => city )
Location ( id => 2, parent_id => ..., name => California, type => state )

De cette façon, chaque entreprise appartient à une ville et, implicitement, à un État et un pays aussi bien et tout a un id agréable. Vous pouvez également ne pas faire l'erreur d'avoir une entreprise qui est à New York, la Californie, le Japon (qui est actuellement possible).

Compte tenu de ce que vous avez vous ne pouvez les villes de filtrage via une recherche de nom:

$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);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top