Список городов, не входящих в базу данных в CakePhp

StackOverflow https://stackoverflow.com/questions/3509927

  •  29-09-2019
  •  | 
  •  

Вопрос

У меня есть приложение в CakePhp, в котором перечислены бизнес. У меня есть бизнес-модель / контроллер, а также модель / контроллер STAVE_LIST. Однако я хочу быть более подробно, поэтому, когда пользователь нажимает на государственную страницу, он перечисляет все города в этом конкретном состоянии, в котором представлены предприятия.
Затем, когда они нажимают на конкретный город, он показывает страницу, в которой перечислены все предприятия в этом конкретном городе.

Как бы я мог сделать это без базы данных таблицы списка всех городов?

Это было полезно?

Решение

Для этого лучшая структура базы данных будет чем -то вроде этого:

Table: Location
id
parent_id
name
type

Table: Business
id
location_id
...

Ваши города и штаты должны сформировать дерево:

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

Например:

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

Таким образом, каждый бизнес принадлежит городу и неявно и государству и стране, и у всего есть хороший удостоверение личности. Вы также не можете совершить ошибку, имея бизнес, который находится в Нью -Йорке, Калифорния, Япония (что в настоящее время возможно).

Учитывая то, что у вас есть, вы можете отфильтровать города только через поиск имени:

$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);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top