我有一個教條實體映射的問題。 有一個基本的用戶實體,我想創建一個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