Подтвердить что ты не робот

Ошибка доступа к отношениям "один ко многим" в Symfony 2 с доктриной

У меня есть простое отношение "один ко многим", которое вызывает ошибки при попытке выполнить итерацию через коллекцию.

из "One" User.php

    /**
     * @ORM\OneToMany(targetEntity="UserMeasurement", mappedBy="measurements")
     */
    protected $measurements;

И соответствующее "Many" UserMeasurement.php:

    /**
     * @ORM\ManyToOne(targetEntity="User", inversedBy="measurements", cascade={"persist"})
     * @ORM\JoinColumn(name="user_id", referencedColumnName="id")
     */
    protected $user;

и все же, когда я пытаюсь запустить из команды:

    $query = $em->createQuery(" SELECT user FROM AcmeFooBundle:User user");
    $users = $query->getResult();
    foreach ($users as $user) {
        print count($user->getMeasurements()->toArray());
    }

Я получаю следующую ошибку:

[ErrorException]
Примечание: Undefined index: измерения в /Applications/MAMP/htdocs/Symfony/vendor/doctrine/lib/Doctrine/ORM/Persisters/BasicEntityPersister.php строка 1280

Я запустил команду doctrine:schema:update --force, и она говорит, что я синхронизирован.

Я неправильно повторяю?

4b9b3361

Ответ 1

В вашей пользовательской сущности у вас есть эта строка:

@ORM\OneToMany(targetEntity="UserMeasurement", mappedBy="measurements")

То, что вы говорите, состоит в том, что оно должно выглядеть в объекте UserMeasurement для поля с именем measurements, которого не существует. Вероятно, вы планировали следующее:

@ORM\OneToMany(targetEntity="UserMeasurement", mappedBy="user")