Symfony2で、Entityにcreated_at/updated_at(作成日時/更新日時)を自動で入れる方法
普通にやるとLifecycle Callbackを使うことになるのですが、こんなの毎回書くのは面倒なので、一発でどうにかしたいです。
Doctrine Extensions(DoctrineExtensionsBundle)を使います。
インストール
deps
[gedmo-doctrine-extensions] git=git://github.com/l3pp4rd/DoctrineExtensions.git [DoctrineExtensionsBundle] git=git://github.com/stof/StofDoctrineExtensionsBundle.git target=/bundles/Stof/DoctrineExtensionsBundle version=1.0.0
で、
bin/vendors install
app/AppKernel.php
$bundles = array( … new Stof\DoctrineExtensionsBundle\StofDoctrineExtensionsBundle(), … );
app/autoload.php
$loader->registerNamespaces(array( // ... 'Stof' => __DIR__.'/../vendor/bundles', 'Gedmo' => __DIR__.'/../vendor/gedmo-doctrine-extensions/lib', // ... ));
使い方
app/config/config.yml
... stof_doctrine_extensions: orm: default: timestampable: true …
で、作成日時/更新日時を入れたいEntityの定義ファイルに
... fields: ... created_at: type: datetime gedmo: timestampable: on: create updated_at: type: datetime gedmo: timestampable: on: update
を追加して、あとはEntityを再生成してデータを投入
php app/console doctrine:generate:entities Nantoka php app/console doctrine:schema:update --force
でOK
気になる点
- createとupdateで秒がずれることがある