Ошибка доступа к связи один-ко-многим в Symfony 2 с Doctrine - PullRequest
11 голосов
/ 05 марта 2012

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

из «One» User.php

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

И соответствующий «Многие» 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]
Примечание: неопределенный индекс: измерения в /Applications/MAMP/htdocs/Symfony/vendor/doctrine/lib/Doctrine/ORM/Persisters/BasicEntityPersister.php строка 1280

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

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

1 Ответ

17 голосов
/ 05 марта 2012

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

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

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

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