我有一个教条实体映射的问题。 有一个基本的用户实体,我想创建一个Friend实体,由两个外键组成的用户表,友谊的第一个所有者和另一个。 我试图这样做(yaml),实体生成的方式是正确的,但是当我使用doctrine scheme更新创建数据库时,它具有完全不同的结果。Symfony2/Doctrine2关系相同的对象两次
用户实体:
..\..\Entity\User:
type: entity
uniqueConstraints:
usernameCanonical:
columns: usernameCanonical
emailCanonical:
columns: emailCanonical
oneToMany:
owners:
targetEntity: Friend
mappedBy: owner
friends:
targetEntity: Friend
mappedBy: friend
而且朋友实体:
..\..\Entity\Friend:
type: entity
table: friend
lifecycleCallbacks:
prePersist: [setCreated, setModified]
preUpdate: [setModified]
manyToOne:
owner:
targetEntity: User
inversedBy: friends
joinColumn:
name: user
referencedColumnName: id
onDelete: cascade
friend:
targetEntity: User
inversedBy: owners
joinColumn:
name: user
referencedColumnName: id
onDelete: cascade
这应该从相知到用户创建两个陌生的,而是它创造一个这样的:
ALTER TABLE friend ADD CONSTRAINT FK_55EEAC618D93D649 FOREIGN KEY (user) REFERENCES users (id) ON DELETE CASCADEe
这对我来说不是很清楚你想做什么。你想在你的朋友实体中做什么?你不能在你的用户实体中使用多对多的自引用吗? – copndz
基本上映射2个用户实体在一起,但我确实不喜欢使用映射,只有两个int值,没有任何外键 – ghostika
你应该看看Doctrine文档(ManyToMany Self-referencing):http://docs.doctrine -project.org/en/2.0.x/reference/association-mapping.html#many-to-many-self-referencing – copndz