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

时间:2012-03-05 19:10:49

标签: php doctrine symfony

当我尝试迭代集合时,我有一个简单的一对多关系错误。

来自“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命令,它说我已经同步了。

我是否错误地迭代了?

1 个答案:

答案 0 :(得分:17)

在您的用户实体中,您有以下这一行:

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

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

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