我有一个资产表,其中包含所有资产类型共享的所有字段,例如name
,path
,filetype
,size
等。
现在,我有2种资产类型:属于architects
的资产和属于construtors
的资产。所以我在这两种类型上建立了 HABTM 关系,即
|-------- architects_assets ------- architects
assets|
|-------- constructors_assets ----- constructors
问题是,在创建资产时,我希望每个资产 中的一个<{1}} 或 a architects_asset
- 资产永远不会是架构师和构造函数资产。
简单的解决方案是创建constructors_asset
和architect_assets
表并删除constructors_assets
表,因为这样您就可以添加,编辑,查看,删除每种类型分开。或者,我想我可以在assets
控制器中创建architects_asset_add
和constructors_asset_add
个动作,但是我必须为编辑,查看和删除做同样的事情,臃肿。
你会如何解决这个问题?
答案 0 :(得分:1)
我已经能够使用 hasMany through 关系来解决这个问题。这意味着为architects_assets
和construtors_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
答案 1 :(得分:0)
我认为修改资产模型以添加新的CRUD方法来支持这两个操作将是一个好主意 当然它会让你的模型代码更大,但它允许你将所有资产保存在同一个表上,以防你需要对它们做一些与架构或构造函数关系无关的操作。