0

オブジェクトが保存された後、プロジェクトでストアド プロシージャを呼び出そうとしています (トリガーのように実行できますが、MySQL ではトリガー内でストアド プロシージャを呼び出すことはできません)。

最初の試み: Doctrine_Record の postInsert() フックに呼び出しを書きました。現時点では、トランザクションはデータベースにコミットされていないため、間違った方法です。

2 回目の試行: EventListener を作成し、postTransactionCommit() イベントを呼び出します。このレベルでは、どのテーブルが変更されたかを知ることができないことを除けば、問題なく動作します。これに関連して、どのテーブルが「初期化」されているかはわかりますが、それだけです。また、トランザクションで SELECT のみを実行している場合は、ストアド プロシージャを呼び出したくありません。

だから今、私は立ち往生しています... 私が従わなかった手がかりが見えますか?

ありがとう

4

1 に答える 1

0

Doctrine_Record の save() メソッドをオーバーライドすることで問題を解決したので、save() の直後に接続がコミットされます。

于 2013-03-09T08:42:43.487 に答える