Для этой цели лучшая структура базы данных будет выглядеть примерно так:
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);