Город принадлежит через провинцию ассоциации, как упростить код? - PullRequest
0 голосов
/ 10 февраля 2010

Таблицы:

Province hasMany County, County belongsTo Province, County hasMany City, City belongsTo County

Так что в основном что-то вроде: City belongsThroughCountyTo Province

Положение:

В форме поиска у меня есть выпадающее меню выбора с провинциями.

«Код»:

Когда я перечисляю результаты, я сначала получаю идентификаторы округов, принадлежащих указанной провинции, а затем делаю City.county_id IN (array_of_counties_ids_here).

Вопрос:

Мой вопрос: могу ли я сделать это лучше? Без первого доступа к таблице округов. Простое трехстороннее объединение должно сработать, но я понятия не имею, как реализовать его в Cake.

Добавление поля province_id в таблицу городов в моем случае не является решением (не может изменить таблицы).

1 Ответ

1 голос
/ 10 февраля 2010

Этого следует избегать, создав в SQL представление, которое напрямую связывает город с провинцией.

Предположим, у вас есть:

tblCity
  city_id
  county_id
  name --etc
tblCounty
  county_id
  province_id
  name --whatever else
tblProvince
  province_id
  --whatever else

create or replace view CityToProvince as 
  select c.city_id, p.province_id from tblCity c
  join tblCounty co on co.county_id = c.county_id
  join tblProvince p on p.province_id = co.province_id;

Как только это будет создано, вы можете:

select province_id from CityToProvince where city_id = [whatever];
...