У меня проблема с отображением сущности доктрины. У меня есть базовая сущность пользователя, и я хочу создать сущность Друга, состоящую из двух внешних ключей к пользовательской таблице, первого владельца дружбы и другого. Я пытался сделать это таким образом (yaml), сущности генерируются правильно, но когда я создаю БД с обновлением схемы доктрины, это дает совершенно другой результат.
Пользовательский объект:
..\..\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
1 ответ
Общие отношения «Друзья» - это отношения доктрины ManyToMany SelfReferencing, которые используются в качестве примера в документация по доктрине
Похожие вопросы
Новые вопросы
symfony
Symfony относится как к фреймворку PHP для создания веб-приложений, так и к набору компонентов, на которых строится фреймворк. Этот тег относится к поддерживаемым в настоящее время основным версиям 3.x, 4.x и 5.x. Кроме того, вы можете указать точную версию, используя соответствующий тег. Этот тег не следует использовать для вопросов о Symfony 1.x. Вместо этого используйте тег Symfony1.