Я борюсь с проблемой, основанной на сценарии использования, который описан здесь:
Вариант использования 2: простая производная идентификационная информация
В моем приложении Symfony есть следующие сущности и сопоставления Doctrine:
class User
{
private $entity_id;
private $address;
...
}
class Address
{
private $user;
...
}
AppBundle\Entity\User:
type: entity
id:
entity_id:
type: integer
generator:
strategy: AUTO
oneToOne:
address:
targetEntity: Address
mappedBy: user
cascade: ["persist"]
AppBundle\Entity\Address:
type: entity
id:
user:
associationKey: true
oneToOne:
user:
targetEntity: User
inversedBy: address
joinColumn:
name: entity_id
referencedColumnName: entity_id
Каждый раз, когда я выполняю запрос DQL, включающий сущность User, Doctrine выполняет один дополнительный запрос для каждого соответствующего пользователя, чтобы получить соответствующую сущность Address. Это происходит каждый раз, даже если данные адреса никогда не используются в коде.
Я попытался воспроизвести эту проблему на ванильной установке Symfony, и я столкнулся с другой проблемой, я не могу выполнить следующий код, поскольку я получаю сообщение об ошибке (У объекта типа AppBundle \ Entity \ Address отсутствует назначенный идентификатор для поля «пользователь»):
$user = (new User())->setAddress(new Address());
$entityManager->persist($user);
$entityManager->flush();
У вас есть подсказка или что-то не так?
С наилучшими пожеланиями