Symfon2「カスタマイズ編(4) 投稿日時・更新日時の自動挿入」
ライフサイクル・コールバック機能の利用
【ライフサイクル・コールバックとは】
ライフサイクル・コールバックとは、データの挿入・更新・削除の前後に特別な処理を定義できる機能のこと
ライフサイクル・コールバックには、以下のようなものがある
- PreRemove
- PostRemove
- PrePersist
- PostPersist
- PreUpdate
- PostUpdate
- PostLoad
- LoadClassMetadata
【ライフサイクル・コールバックの埋め込み】
Post.phpにライフサイクル・コールバックを埋め込みます
$ vim src/My/BlogBundle/Entity/Post.php
/**
* @ORM\Entity
* @ORM\HasLifecycleCallbacks
*/
class Post
{
// ...
/**
* set values bedore persist
*
* @ORM\PrePersist
*/
public function prePersist()
{
$this->createdAt = new \DateTime();
$this->updatedAt = new \DateTime();
}
/**
* set values bedore update
*
* @ORM\PreUpdate
*/
public function preUpdate()
{
$this->updatedAt = new \DateTime();
}
// ...
}
DefaultController.phpから、newAction()とeditAction()の中で投稿日時と更新日時の設定を削除
$ vim src/My/BlogBundle/Controller/DefaultController.php
public function newAction()
{
// ...
// $post->setCreatedAt(new \DateTime());
// $post->setUpdatedAt(new \DateTime());
// ...
}
public function editAction($id)
{
// ...
// $post->setUpdatedAt(new \DateTime());
}
【ブラウザで確認】
表向きの動作は変わらないが、更新日時、投稿日時が正確に保存されていることをDB上で確認する
【参考】
ref. カスタマイズ編(4) 投稿日時・更新日時の自動挿
12月 13 2011
Symfon2「カスタマイズ編(4) 投稿日時・更新日時の自動挿入」
Symfon2「カスタマイズ編(4) 投稿日時・更新日時の自動挿入」
ライフサイクル・コールバック機能の利用
【ライフサイクル・コールバックとは】
ライフサイクル・コールバックとは、データの挿入・更新・削除の前後に特別な処理を定義できる機能のこと
ライフサイクル・コールバックには、以下のようなものがある
【ライフサイクル・コールバックの埋め込み】
Post.phpにライフサイクル・コールバックを埋め込みます
DefaultController.phpから、newAction()とeditAction()の中で投稿日時と更新日時の設定を削除
【ブラウザで確認】
表向きの動作は変わらないが、更新日時、投稿日時が正確に保存されていることをDB上で確認する
【参考】
ref. カスタマイズ編(4) 投稿日時・更新日時の自動挿
By KYO • Symfony • Tags: tutorial