我遇到了一个奇怪的问题,使用Doctrine2。与Doctrine2三重分割映射问题
,我发现了以下错误:
学说ORM:证实模式
[Mapping] FAIL - The entity-class 'EmailVerification' mapping is invalid:
* The referenced column name 'id' does not have a corresponding field with this
column name on the class 'OurUsers'.
[Database] OK - The database schema is in sync with the mapping files.
我的情况如下:
- 我有3个表共享一个主键。
- 表
Auth
其中保存user_id
PK。 - 表
OurUsers
其中Auth.user_id
是共享的PK。 - 表
EmailVerification
其中OurUsers.user_id
是共享的PK。 - 我也有
NotOurUsers
- 因此分裂。
实体的声明如下:
/**
* @Entity
* @Table(name="auth")
*/
class Auth {
/** @Id @Column(type="integer", name="user_id") @GeneratedValue @var int */
private $id;
/* ... */
}
/**
* @Entity
* @Table(name="our_users")
*/
class OurUsers {
/**
* @Id
* @OneToOne(targetEntity="Auth")
* @JoinColumn(nullable=false, name="user_id", referencedColumnName="user_id")
* @var Auth
*/
private $id;
/* ... */
}
/**
* @Entity
* @Table(name="email_verification")
*/
class EmailVerification {
/**
* @Id
* @OneToOne(targetEntity="OurUsers")
* @JoinColumn(nullable=false, name="user_id", referencedColumnName="user_id")
* @var OurUsers
*/
private $id;
/* ... */
}
我使用Dosctrine 2.1。
btw学说2.2验证映射是好的,但在运行时我得到与2.1相同的错误。
什么,如果你改变了'referencedColumnName'在EmailVerification只是'“身份证” '?这样它就会引用OurUsers类中的id属性,这个属性指的是Auth中的user_id。我认为这个问题肯定是在 – jere 2012-02-09 14:49:47
之前试过的,在这里发布 - 不工作。 – David 2012-02-12 13:03:31