Сценарий таков: пользователь однозначно связан с братом, а брат может заблокировать другого брата
Тогда я не могу сопоставить BrotherHasBrotherBlocked # brother в качестве идентификатора, поскольку целевая сущность Brother также сопоставляет ассоциацию как идентификатор, но у каждого объекта должен быть идентификатор, и я не знаю, как избавиться от этого сбоя сопоставления.
Отображенные объекты ниже:
Пользователь сущности:
App\Domain\Model\User\User:
type: entity
table: user
id:
id:
type: integer
nullable: false
options:
unsigned: true
id: true
generator:
trategy: IDENTITY
fields:
...
oneToOne:
brother:
targetEntity: App\Domain\Model\User\Brother\Brother
cascade: ["persist"]
fetch: LAZY
mappedBy: user
joinColumns:
user_id:
referencedColumnName: id
orphanRemoval: false
Сущность Брат
App\Domain\Model\User\Brother\Brother:
type: entity
table: brother
id:
user:
associationKey: true
fields:
...
oneToOne:
user:
targetEntity: App\Domain\Model\User\User
cascade: ["persist"]
fetch: LAZY
inversedBy: brother
joinColumns:
id:
referencedColumnName: id
orphanRemoval: false
oneToMany:
brothersBlocked:
targetEntity: App\Domain\Model\User\Brother\BrotherHasBrotherBlocked
mappedBy: brother
cascade: ["persist"]
Сущность BrotherHasBrotherBlocked
App\Domain\Model\User\Brother\BrotherHasBrotherBlocked:
type: entity
table: brother_has_brother_blocked
id:
brother:
associationKey: true
brotherBlocked:
associationKey: true
fields:
...
manyToOne:
brother:
targetEntity: App\Domain\Model\User\Brother\Brother
cascade: ["persist"]
inversedBy: brothersBlocked
joinColumns:
brother_id:
referencedColumnName: id
orphanRemoval: false
brotherBlocked:
targetEntity: App\Domain\Model\User\Brother\Brother
cascade: ["persist"]
inversedBy: brothersBlocked
joinColumns:
brother_blocked_id:
referencedColumnName: id
orphanRemoval: false
lifecycleCallbacks: { }
Выполнение: bin / console доктрина: схема: проверить
Отображение
[FAIL] Сущность-класс
App \ Domain \ Model \ User \ Brother \ BrotherHasBrotherБлокированное сопоставление
недействительным:
* Невозможно сопоставить ассоциацию 'App \ Domain \ Model \ User \ Brother \ BrotherHasBrotherBlocked # brother as
идентификатор, потому что целевой объект
Приложение \ Домен \ Модель \ Пользователь \ Брат \ Брат также отображает ассоциацию как
идентификатор.
* Невозможно сопоставить ассоциацию 'App \ Domain \ Model \ User \ Brother \ BrotherHasBrotherBlocked # brotherBlocked
в качестве идентификатора, потому что целевой объект
Приложение \ Домен \ Модель \ Пользователь \ Брат \ Брат также отображает ассоциацию как
идентификатор.
* Приложение сопоставлений \ Домен \ Модель \ Пользователь \ Brother \ BrotherHasBrotherBlocked # brotherBlocked
и App \ Domain \ Model \ User \ Brother \ Brother # brothersBlocked являются
несовместимы друг с другом.
Я хотел проверить проверку do после того, как связанное отношение получит целое число вместо правильного типа сущности. Эта ошибка возникла после того, как я успешно сохранил связанные отношения, а затем попробовал тот же запрос и получил эту неожиданную ошибку типа для одного из связанных отношений, на которые я нацеливаюсь здесь