我有一个简单的一对多关系,当我尝试遍历集合时会出错。

来自“一个” 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")

10-07 23:01