2012-03-05 110 views
11

我有一个简单的一对多关系,当我尝试遍历集合时出现错误。在Symfony 2中使用Doctrine访问一对多关系错误

从 “一” 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]
Notice: Undefined index: measurements in /Applications/MAMP/htdocs/Symfony/vendor/doctrine/lib/Doctrine/ORM/Persisters/BasicEntityPersister.php line 1280

我运行了doctrine:schema:update --force命令,它说我同步。我是不是迭代不正确?

回答

17

在用户的实体,您有这行:

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

什么你告诉原则是,它应该在UserMeasurement实体名为measurements场,这不存在。你可能想要的是:

@ORM\OneToMany(targetEntity="UserMeasurement", mappedBy="user") 
相关问题