0

ビジネスをリストする CakePHP のアプリケーションがあります。ビジネス モデル/コントローラーと、state_list モデル/コントローラーがあります。ただし、ユーザーが州のページをクリックすると、その特定の州の企業がリストされているすべての都市が一覧表示されるように、より詳細にしたいと考えています。
次に、特定の都市をクリックすると、その州のすべての企業をリストしたページが表示されます。特定の都市。

すべての都市のリストのデータベース テーブルなしでこれを行うにはどうすればよいでしょうか?

4

1 に答える 1

2

この目的のために、より良いデータベース構造は、次のようなものになります。

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 )

このようにして、各ビジネスは都市に属し、暗黙のうちに州と国にも属し、すべてに適切な ID が割り当てられます。また、ニューヨーク、カリフォルニア、日本にビジネスを持つという間違いを犯すことはできません (現在は可能です)。

あなたが持っているものを考えると、名前検索を介してのみ都市をフィルタリングできます:

$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);
于 2010-08-18T08:01:54.583 に答える