我在CakePHP中有一个列出企业的应用程序。我有一个业务模型/控制器以及state_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