我有一个 Assets 表,其中包含所有 Assets 类型共享的所有字段,例如名称
、路径
、文件类型
、大小
等
现在,我有 2 种 Assets 类型:属于 architects
的 Assets 和属于 constructors
的 Assets 。所以我在这两种类型上建立了HABTM关系,即
|-------- architects_assets ------- architects
assets|
|-------- constructors_assets ----- constructors
问题是,在创建 Assets 时,我希望每个 Assets 都是architects_asset
或constructors_asset之一
—— Assets 永远不能同时是建筑师和 builder 的 Assets 。
简单的解决方案是创建 architect_assets
和 constructors_assets
表并删除 assets
表,因为这样您就可以添加分别编辑、查看、删除每种类型。或者,我想我可以在 assets
Controller 中创建 architects_asset_add
和 constructors_asset_add
操作,但随后我必须为编辑、查看、删除,显得臃肿。
您将如何解决这个问题?
最佳答案
我已经能够使用hasMany through关系来解决这个问题。这意味着为 architects_assets
和 construtors_assets
创建单独的 Controller ,但这适合我,因为我需要明确区分这两种 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
关于php - CakePHP 多个 HABTM 关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5252397/