我有一个简单的一对多关系,当我尝试遍历集合时会出错。
来自“一个” 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());
}
我收到以下错误:
我已经运行了
doctrine:schema:update --force
命令,它说我正在同步。我迭代不正确吗?
最佳答案
在您的用户实体中,您具有以下这一行:
@ORM\OneToMany(targetEntity="UserMeasurement", mappedBy="measurements")
您要告诉Doctrine的是,它应该在
UserMeasurement
实体中查找名为measurements
的字段,该字段不存在。您可能打算这样做的是:@ORM\OneToMany(targetEntity="UserMeasurement", mappedBy="user")