Ошибка доступа к отношениям "один ко многим" в 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
, и она говорит, что я синхронизирован.
Я неправильно повторяю?
Ответы
Ответ 1
В вашей пользовательской сущности у вас есть эта строка:
@ORM\OneToMany(targetEntity="UserMeasurement", mappedBy="measurements")
То, что вы говорите, состоит в том, что оно должно выглядеть в объекте UserMeasurement
для поля с именем measurements
, которого не существует. Вероятно, вы планировали следующее:
@ORM\OneToMany(targetEntity="UserMeasurement", mappedBy="user")