【发布时间】:2015-06-18 22:16:45
【问题描述】:
我的 MySQL 数据库中有三个表,它们看起来像这些:
创建表`角色`( `id` 整数(10), `name` varchar(50), `order` tinyint(3) ); 创建表`用户`( `id` 整数(10), `用户名` varchar(50), `密码`字符(60) ); 创建表`user_role`( `id` 整数(10), `user_id` int(10), `role_id` int(10), `order` int(10), KEY `user_id` (`user_id`), KEY `role_id` (`role_id`), CONSTRAINT `user_role_ibfk_1` FOREIGN KEY (`role_id`) REFERENCES `role` (`id`), 约束 `user_role_ibfk_2` 外键 (`user_id`) 参考 `user` (`id`) );注意:我从这些表中删除了一些定义部分,例如 AUTO_INCREMENT,因此只是为了使架构更简单。
我的问题是,我需要将这些表映射到实体类,例如 User 和 Role 但我不知道如何管理 user_role 表中的 order 列以及如何管理这些实体中的关系。
我的第一个猜测是:
文件User.php
文件Role.php
这些实体将生成三个我需要的表,但user_role 表中没有我真正需要的order 列。把它放在那里很重要。我也可以创建第三个实体,例如 UserRole,但我不知道映射信息会是什么样的。
有什么帮助吗?
【问题讨论】:
-
订单栏目的是什么?如果您在 user_role 表中需要它,您可能在类中需要它,并且应该创建 UserRole 类。
-
user_role表中order列的目的是存储用户在给定角色中的位置信息。可能该表应该重命名为user_in_role_order之类的东西,这在语义上似乎更正确,但第三个UserInRoleOrder实体类仍然存在问题。映射信息应该是什么样的?Role->users是否有可能让这个属性直接引用User并且仍然在Role->users中拥有按UserInRoleOrder->order排序的结果集合?我怎样才能做到这一点?我还是教义 2 的新手。
标签: php entity-framework orm doctrine-orm