mysql - CakePHP 3.x -> 属于 Many for theree 表
问题描述
我有一个设置,其中关系是三个因素:
成员组角色
因此,一个成员可能是多个组的一部分(并且组包含多个成员),但根据该组合,角色也会有所不同。
工作中的数据库人员告诉我要像这样设置表:
member
id name
group
id name
role
id name
member_group_role
id member_id group_id role_id
我如何让它与 cakephp 一起工作?我只为两个链接表成功设置了 HABTM,但不是三个。
谢谢!
解决方案
根据您的结构,我认为每张桌子有 4 个模型。前 3 个模型将与第 4hasMany
个模型相关,第 4 个模型将与这些模型BelongsTo
相关
1) 会员
class MemberTable extends Table
{
public function initialize(array $config)
{
$this->hasMany('MemberHasGroupHasRole')
->setForeignKey('member_id');
}
}
2) 组
class GroupTable extends Table
{
public function initialize(array $config)
{
$this->hasMany('MemberHasGroupHasRole')
->setForeignKey('group_id');
}
}
3) 角色
class RoleTable extends Table
{
public function initialize(array $config)
{
$this->hasMany('MemberHasGroupHasRole')
->setForeignKey('role_id');
}
}
4) MemberHasGroupHasRole
class MemberHasGroupHasRoleTable extends Table
{
public function initialize(array $config)
{
$this->belongsTo('Member')
->setForeignKey('member_id')
->setJoinType('INNER');
$this->belongsTo('Group')
->setForeignKey('group_id')
->setJoinType('INNER');
$this->belongsTo('Role')
->setForeignKey('role_id')
->setJoinType('INNER');
}
}
推荐阅读
- .htaccess - 将 url 重写为对 seo 更友好的
- mysql - CentOS7启动mysql失败
- flutter - Flutter pdf文件未保存并显示错误
- javascript - JavaScript - 如何与字符和对象发生冲突?
- node.js - 在节点 Docker 容器中运行项目时出现 Tailwind CSS EACCESS 错误(Docker Compose)
- mysql - 将值“STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION”设置为“sql_mode”时出错
- javascript - 在 setInterval 内等待
- hololens - Hololens 2 离线同步
- variables - Jenkins在ssh命令中分配变量
- amazon-web-services - 我是否需要任何 ELB(负载均衡器)在私有子网之间建立网络?- AWS