【发布时间】:2012-01-02 14:03:18
【问题描述】:
SchemaTool 正在为 OneToOne 的关联生成唯一索引。我相信这是不正确的。
Doctrine 的 Associations 手册页的第 6.6 节显示了 OneToOne 的示例,即产品有一个运输。这显示生成 Product 表:
CREATE TABLE Product (
id INT AUTO_INCREMENT NOT NULL,
shipping_id INT DEFAULT NULL,
PRIMARY KEY(id)
) ENGINE = InnoDB;
但是,对于我的实体用户具有一个组织的相同代码,我的用户表 SQL 生成为
CREATE TABLE User (
id INT AUTO_INCREMENT NOT NULL,
organisation_id INT DEFAULT NULL,
UNIQ_3B978F9FA7F43455 (organisation_id),
PRIMARY KEY(id)
) ENGINE = InnoDB;
这会阻止我添加 2 个具有相同组织的用户。不正确。
我还尝试使用唯一的 JoinColumn 注释参数来详细说明。
@JoinColumn(name="organisation_id", referencedColumnName="id", unique="false")
有什么想法吗?我似乎找不到任何关于此的信息。
谢谢
【问题讨论】:
-
1-to-1关系具有该功能... -
如果您希望组织中有很多用户,那么您需要
1-to-many关系。 -
但是 Doctrine 的一对一示例是产品 OneToOne Shipping。如果这是一项功能,则意味着产品无法共享相同的运输方式,这似乎是错误的。许多产品应该可以使用运输选项。
-
是的,那里似乎有错误。一对一关系应该是两个
PRIMARY键或PRIMARY和UNIQUE键或两个UNIQUE键之间的引用。 -
@ypercube 是对的。我首先认为它们是指运输方式,但它可能意味着按订单列出的运输对象,例如发货日期、签收日期等。
标签: symfony doctrine-orm