1

私の教義エンティティには、というdatetimeプロパティがありますupdated。これにより、オブジェクトの(変更された)値がDBに書き込まれるたびに現在の時刻が取得されます。私はMySqlでこれを行う方法を知っていますが、教義/symfonyの解決策を探しています。

する方法はありますか

  1. インスタンスのINSERT/UPDATEがDBに送信される前に、何かにフックします。
  2. プロパティを現在の時刻に更新しupdated、2番目のUPDATEステートメントをトリガーせずにDBに書き込まれていることを確認します。
4

2 に答える 2

5

DoctrineExtensionsのタイムスタンプ可能な動作を参照してください。それをSymfonyに統合するためのStofDoctrineExtensionsBundleがあります。

于 2012-08-31T10:32:07.780 に答える
1

拡張機能は必要ありません。ライフサイクルコールバックを使用するだけです。基本的に、HasLifecycleCallbacksアノテーションで構成されたイベントコールバックがあることをエンティティにマークします。

use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity
 * @ORM\HasLifecycleCallbacks
 * ...
 */
class MyEntityClass {
...

次に、発生する特定のイベントで実行するインスタンスメソッドをマークします。たとえば、次のように設定しupdatedます。

...
class MyEntityClass {
...
    /**
     * @ORM\PreUpdate
     */
    public function onPreUpdate() {
        $this->updated = new \DateTime();
    }
...
于 2012-09-02T10:54:10.057 に答える