비즈니스를 나열하는 CakePHP에 응용 프로그램이 있습니다. 비즈니스 모델/컨트롤러와 state_list 모델/컨트롤러가 있습니다. 그러나 사용자가 주 페이지를 클릭하면 특정 주에있는 모든 도시가 나열됩니다.
그런 다음 특정 도시를 클릭하면 모든 비즈니스를 나열하는 페이지가 표시됩니다 그 특별한 도시에서.
모든 도시 목록의 데이터베이스 테이블이 없으면 어떻게 할 수 있습니까?CakePHP에 데이터베이스가없는 도시 목록
답변
는 이러한 목적을 위해 더 나은 데이터베이스 구조는 다음의 라인을 따라 뭔가 될 것이다 :
Table: Location
id
parent_id
name
type
Table: Business
id
location_id
...
귀하의 도시와 국가가 형성해야 tree :
Business (..., location_id => 5, ...)
Location (id => 5, parent_id => 2, name => San Francisco, type => city)
Location (id => 2, parent_id => ..., name => California, type => state)
: 예를 들어
America
California
San Francisco
New York
...
Japan
Tokyo
...
그런 식으로 각 사업체는 도시에 속해 있으며 암묵적으로 국가에 속합니다. 그리고 나라도 좋은 이드를 가지고 있습니다. 또한 캘리포니아 주 뉴욕에있는 사업을하는 데 실수를 할 수 없습니다 (현재 가능합니다).
을 감안할 때 당신은 이름 검색을 통해 도시를 필터링 할 수 있습니다 무엇을 :
$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);
감사합니다. 이것은 내가 필요한 충고입니다. 나는 다른 나라들까지도 확장시켜야 할 것이므로 위치를 어떻게 처리하는지 다시 생각해야 할 것입니다. 나는 비즈니스를 추가 할 때 해당 주/국가에있는 도시가 존재하는지 확인하고, 그렇지 않으면 테이블에 추가 할 것이라고 가정합니다. – xtine
@xtine. 당신은 철자 변종에 대한 중복 생성에 대해주의해야합니다. 그러므로 인터페이스 방식으로 드롭 다운 목록 (1. 국가 선택, 국가 선택 ...)을 사용하거나 자동 완성 또는 일부를 수행 할 수 있습니다. – deceze
최신 트리 기반 버전에 대한 위치 정보를 가지고있는 현재의 방법으로 데이터베이스 마이그레이션 스크립트에 대해 제안 해주십시오. 그리고 일단 트리 기반 버전이 내 마음 속으로 퍼지게되면 자동 완성 드롭 다운을 가질 생각입니다. :) – xtine
무엇 데이터베이스 구조가 현재처럼 보이나요? 사업체가 위치한 도시/주를 어떻게 결정합니까? – deceze
비즈니스 테이블 : ID, 이름, 주소, 도시, state_id, 우편 번호, 국가, url; 상태 테이블 : ID, 이름, 약어. 주 정부 페이지를 열거 할 때 주정부 ID가있는 모든 업체를 확보 할 수 있습니다. 나는 똑같은 일을하지 않고도시 목록에 올리는 법을 모른다. – xtine