1

我在实体“顾问”和“状态”之间有多对多关联,其定义如下:

@ORM\ManyToMany(targetEntity="Status", inversedBy="consultant")
  @ORM\JoinTable(name="consultant_status",
  joinColumns={
  @ORM\JoinColumn(name="consultant_id", referencedColumnName="id")
  },
  inverseJoinColumns={
  @ORM\JoinColumn(name="status_id", referencedColumnName="id")
 }
)

当我尝试(在 Doctrine postUpdate 事件中)通过以下方式从 Status 中获取 id 时:

...
$entity = $args->getEntity();
if($entity instanceof Consultant){
 $status_id= $entity->getStatu()->getId();
}
...

我得到:

调用未定义的方法 Doctrine\ORM\PersistentCollection::::getId()

有人知道我做错了什么吗?

4

1 回答 1

2

由于顾问和状态处于多对多关系中,getStatus()将返回一个Collection对象,其中包含与此顾问相关的所有状态。

要遍历所有状态,只需使用 foreach

foreach($entity->getStatu() as $statut) {
                        ^^^
                        //you might have a typo here
    $statut->getId();
    //other stuff
}
于 2013-02-05T14:42:03.283 回答