我们有一个数据库模式,以简化(略作作)的形式看起来像:
在列(domainId,groupId)上设置从用户到域的外键的位置,以确保引用完整性。此结构可以很好地用于预期目的。
但是,对于与同一个数据库通信的新应用程序,我现在需要为Doctrine创建一个映射,以映射上述结构,包括两列上的外键关系。
我尝试了以下方法:
<entity name="User" table="users">
<!-- other fields -->
<many-to-one field="domain" target-entity="Domain" fetch="LAZY">
<join-columns>
<join-column name="domainId" referenced-column-name="domainId"/>
<join-column name="groupId" referenced-column-name="groupId"/>
</join-columns>
</many-to-one>
</entity>
Run Code Online (Sandbox Code Playgroud)
但这给我一个错误:
UnitOfWork.php line 2649: Undefined index: groupId
所以,我的问题是:
在主义中描述多列多对一外键关系的正确方法是什么?
为了完整起见,数据库为上述ERD中所述的架构创建代码:
CREATE TABLE `users` (
`userId` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`groupId` INT(10) UNSIGNED NOT NULL,
`domainId` INT(10) UNSIGNED NOT NULL,
`someData` VARCHAR(32),
PRIMARY KEY (`userId`),
KEY `key_users_groupId_domainId` (`groupId`, `domainId`)
) ENGINE=InnoDB;
CREATE TABLE `domains` (
`domainId` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`groupId` …Run Code Online (Sandbox Code Playgroud) php mysql doctrine foreign-key-relationship doctrine-mapping