Простая производная идентификационная проблема - PullRequest
0 голосов
/ 10 января 2019

Я борюсь с проблемой, основанной на сценарии использования, который описан здесь: Вариант использования 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();

У вас есть подсказка или что-то не так?

С наилучшими пожеланиями

...