2011-07-06 22 views
2

タイトルはすべてそれを説明します。私はエンティティでlifecyclecallback関数を持っています。エンティティからではなく、PostPersistイベントから最後に挿入されたIDを取得したい。例として、私はそれがDoctrine 2 - PostPersistで最後に挿入されたIDのIDを取得する方法は?

postPersist書かれているドキュメントで

$newSeating = new Seat(); 
$newSeating->setTitle("Something"); 
$this->_em->persist($newSeating); 
$this->_em->flush(); 
$newSeating->getId(); 

をやりたいいけない - postPersistイベント エンティティ が永続化された後にエンティティのために発生します。 データベースの挿入後に呼び出されます 操作。生成された主キー の値は、 postPersistイベントで使用できます。

私はどのようにしてpostPersistでプライマリキーの値を取得できますか? (I "はMappedsuperclassを使用して、mおよびpostpersist機能がMappedsuperclassであるので、それはMappedsuperclassを拡張それぞれ、すべてのエンティティのために利用可能である) おかげ。

答えて

4
... 
public function postPersist(\Doctrine\ORM\Event\LifecycleEventArgs $e) { 
    $newSeating = $e->getEntity(); 
    $id   = $newSeating->getId(); 
} 
... 
+0

それはpostpersist 1つの引数を必要とすることにエラーをスローが、0 – ufucuk

+0

を与えどのDoctrine 2バージョンを使用しますか? –

+0

私はバージョン2.0.6を使用します – ufucuk

関連する問題