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で秒がずれることがある