2011-03-09 137 views
0

我有一個資產表,其中包含所有資產類型共享的所有字段,例如, namepathfiletypesizeCakePHP多個HABTM關係

現在,我有2種資產類型:屬於architects資產,屬於資產construtors。所以我成立了HABTM這2種關係,即

 |-------- architects_assets ------- architects 
assets| 
     |-------- constructors_assets ----- constructors 

的問題是,創造一種資產的時候,我想每個資產是一個任一architects_asset一個constructors_asset- 資產永遠不是建築師和建築師資產。

簡單的解決方案是創建architect_assetsconstructors_assets表並刪除assets表,因爲這樣一來,你可以添加,編輯,查看,刪除分開各類型。或者,我想我可以在assets控制器中創建architects_asset_addconstructors_asset_add操作,但是我必須對編輯,查看和刪除操作進行相同處理,這看起來很臃腫。

你會如何解決這個問題?

回答

1

我已經能夠解決這個問題,使用hasMany到的關係。這意味着要爲architects_assetsconstrutors_assets創建單獨的控制器,但這適合我,因爲我需要明確區分這兩種資產類型。

得到的模型:

//asset 
class Asset extends AppModel { 
    public $hasMany = array('ArchitectAsset', 'ConstructorAsset') 
} 

//architect asset 
class ArchitectAsset extends AppModel { 
    public $belongsTo = array('Architect, Asset'); 
} 

//architect 
class Architect extends AppModel { 
    public $hasMany = 'ArchitectAsset'; 
} 

//and the same for the ConstructorAsset and Constructor models 
0

我認爲修改資產模型以添加新的CRUD方法來支持這兩個操作將是一個好主意。
確定它會讓你的Model代碼變大,但它可以讓你將所有的資產保留在同一個表上,以防你需要對它們做一些與架構或構造關係無關的操作。