Symfony2.2 にて Timestampable を使用する

効率的なWebアプリケーションの作り方 ~PHPによるモダン開発入門の写経で、Timestampable の導入でつまづいたのでメモ。


Symfony はバージョン 2.1 からパッケージの管理に Composer を使用するようになったということで、本に書いてあるsubmoduleによるインストールをしようとして、ハマってしまいました(汗
Composer を使用した場合の方法が以下


参考にさせていただいたサイト
Composerを使ったSymfony2.1のインストール方法 | karakaram-blog


まずComposerをインストール

$ curl -s http://getcomposer.org/installer | php

Symfony2.2 のルートディレクトリ直下にある composer.json の requireに下記を追加・保存

"require": {
...
    "gedmo/doctrine-extensions": "dev-master",
    "stof/doctrine-extensions-bundle": "dev-master"
}  

下記コマンドでバンドルがインストールされます。

$ php composer.phar update 


次にバンドルの登録
app/AppKernel.phpに下記を追加
※以下は書籍と同じです。

public function registerBundles()
{
    return array(
        // ...
        new Stof\DoctrineExtensionsBundle\StofDoctrineExtensionsBundle(),
        // ...
    );
}


バンドルの設定
app/config/config.ymlの末尾に下記を追加

stof_doctrine_extensions:
    orm:
        default:
            timestampable: true


最後に各エンティティクラスの作成日や更新日を自動で設定したいプロパティについて、設定する
src/Acme/RentacarBundle/Entity/以下の該当ファイル

 use Gedmo\Mapping\Annotation as Gedmo;

/**
 *  ...
 * @Gedmo\Timestampable(on="create")
 */
private $createdAt;

/**
 *  ...
 * @Gedmo\Timestampable(on="update")
 */
private $updatedAt;


効率的なWebアプリケーションの作り方 ~PHPによるモダン開発入門

効率的なWebアプリケーションの作り方 ~PHPによるモダン開発入門