2010-02-09 42 views
0

表:城市屬於通過縣到省的關聯,如何簡化代碼?

Province hasMany CountyCounty belongsTo ProvinceCounty hasMany CityCity belongsTo County

所以基本上是這樣的:City belongsThroughCountyTo Province

現狀:

在搜索表單我有一個選擇下拉菜單與省份。

「代碼」:

當我列出的結果,我第一次拿到屬於指定省,然後做一個City.county_id IN (array_of_counties_ids_here)縣的IDS。

問:

我的問題是,可能我做它在一個更好的辦法?沒有首先訪問縣表。一個簡單的三路連接應該做到這一點,但我不知道如何在Cake中實現它。

在城市表中添加一個province_id字段對我來說不是一個解決方案(不能更改表格)。

回答

1

您應該通過在SQL中創建一個視圖來直接將City連接到Province來避免這種情況。

假設你有:

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]; 
+0

嗯,這是一個很好的答案,我想過做一個視圖,但事情是...我只對數據庫有SELECT權限。 – PawelMysior 2010-02-10 14:47:31

+0

啊。這會阻礙事物的發展。你可以讓你DBA爲你創建這個視圖嗎?我只能讀取我們公司的生產數據庫,但有些人可以通過這樣的方式傳遞。 – 2010-02-10 17:12:49

+0

創建視圖似乎是唯一的方法。我很好地問管理員,我知道了;]謝謝 – PawelMysior 2010-02-17 12:13:17

相關問題