У меня есть две таблицы, описанные в yaml.
Например:
Entities\User:
type: entity
table: users
id:
id:
type: integer
generator:
strategy: AUTO
fields:
username:
type: string
length: 64
oneToMany:
children:
targetEntity: UserToUser
mappedBy: parent
parents:
targetEntity: UserToUser
mappedBy: child
Entities\UserToUser:
type: entity
table: user_to_user
id:
id:
type: integer
generator:
strategy: AUTO
fields:
user_id:
type: integer
nullable: false
child_id:
type: integer
nullable: false
manyToOne:
parent:
targetEntity: User
inversedBy: children
joinColumn:
name: user_id
referencedColumnName: id
child:
targetEntity: User
inversedBy: parents
joinColumn:
name: child_id
referencedColumnName: id
в этом случае все генерируется хорошо, но на самом деле в базе данных в таблице user_to_user нет уникального индекса для полей: user_id и child_id.
Таким образом, есть возможность добавить 2 записи с одинаковым значением.
Я пытался добавить ограничения
uniqueConstraints:
child_user_idx:
columns: child_id,user_id
или 2 других способа:
id:
user_id:
type: integer
child_id:
type: integer
или
id:
parent:
associationKey: true
child:
associationKey: true
Попытка объединить эти параметры, но в результате при проверке консоли доктрины каждый раз возникали ошибки, но сгенерированный sql был именно тем, что мне было нужно.
Один из них, например:
он объединяет столбцы ассоциации 'parent' должны соответствовать ВСЕМ столбцам идентификатора исходного объекта 'Entities \ UserToUser', однако 'child_id' отсутствует.
* Столбцы соединения ассоциации 'child' должны соответствовать ВСЕМ столбцам идентификатора исходного объекта 'Entities \ UserToUser', однако 'user_id' отсутствует.
Я не очень понимаю, что мне нужно добавить, поэтому проверка правильности прошла