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

コンサルタントとステータスはManyToManyの関係にあるため、このコンサルタントに関連するすべてのステータスを持つオブジェクトをgetStatus()返します。Collection

すべての法令をループするには、foreachを使用します

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