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?

War es hilfreich?

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);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top