php - CakePHP 多个 HABTM 关系

标签 php mysql cakephp cakephp-1.3 has-and-belongs-to-many

我有一个 Assets 表,其中包含所有 Assets 类型共享的所有字段,例如名称路径文件类型大小

现在,我有 2 种 Assets 类型:属于 architects 的 Assets 和属于 constructors 的 Assets 。所以我在这两种类型上建立了HABTM关系,即

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

问题是,在创建 Assets 时,我希望每个 Assets 都是architects_assetconstructors_asset之一 —— Assets 永远不能同时是建筑师和 builder 的 Assets 。

简单的解决方案是创建 architect_assetsconstructors_assets 表并删除 assets 表,因为这样您就可以添加分别编辑、查看、删除每种类型。或者,我想我可以在 assets Controller 中创建 architects_asset_addconstructors_asset_add 操作,但随后我必须为编辑、查看、删除,显得臃肿。

您将如何解决这个问题?

最佳答案

我已经能够使用hasMany through关系来解决这个问题。这意味着为 architects_assetsconstrutors_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/

相关文章:

php - Composer\Repository\InvalidRepositoryException 第 1 行解析错误 :

mysql - 无法找到包 '6.9.5.0' 的版本 'MySql.Data.Entity.EF6'

php - Cake PHP,避免和检测空字段和重复主键

php - 构建我的 MySQL 搜索查询以与 PDO 一起使用

javascript - 获取表格中的行号并将其保存到php变量中

mysql - 如何在 Coldfusion/MySql 中进行固定数量的单词搜索动态?

mysql - CakePHP 使用 %like% 和空格查找查询

php - cakePHP,单个模型中的多个 hasOne

javascript - 如何在 vuejs 中使用 axios 从数组发送多个请求?

mysql - 在 Solr(或其他分面搜索引擎)中搜索/导航,正确的方法是什么?