当我尝试迭代集合时,我有一个简单的一对多关系错误。
来自“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
命令,它说我已经同步了。
我是否错误地迭代了?
答案 0 :(得分:17)
在您的用户实体中,您有以下这一行:
@ORM\OneToMany(targetEntity="UserMeasurement", mappedBy="measurements")
你告诉Doctrine的是它应该在UserMeasurement
实体中查找名为measurements
的字段,该字段不存在。你可能想要的是:
@ORM\OneToMany(targetEntity="UserMeasurement", mappedBy="user")