在Symfony 2中使用Doctrine时访问一对多关系出现错误

11
我有一个简单的一对多关系,当我尝试遍历集合时出现错误。
来自“一”个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]
注意:/Applications/MAMP/htdocs/Symfony/vendor/doctrine/lib/Doctrine/ORM/Persisters/BasicEntityPersister.php第1280行出现Undefined index: measurements错误。

我已经运行过doctrine:schema:update --force 命令,并且它说我与数据库同步了。

我的迭代是否有误?

1个回答

17

在你的 User 实体中,有这样一行代码:

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

您告诉Doctrine应该在UserMeasurement实体中查找名为measurements的字段,但该字段不存在。您可能想要的是:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接