それpostInsert
がうまくいかないのですか?
私はこのスニペットを私のプロジェクトの1つ(内Table.class.php
)で使用しています:
public function postInsert($event)
{
$dispatcher = ProjectConfiguration::getActive()->getEventDispatcher();
$dispatcher->notify(new sfEvent($this, 'item.new', array(
'item' => $this
)));
}
新しいアイテムについてのイベントを広めました。次に、構成でこのイベントをキャッチします。
class frontendConfiguration extends sfApplicationConfiguration
{
public function configure()
{
// [....]
$this->dispatcher->connect('item.new', array('shareEvents', 'postToSocial'));
そして私のshareEvents
クラスでは、問題なくアイテムIDにアクセスします。
class shareEvents
{
static public function postToSocial(sfEvent $event)
{
$item = $event['item'];
$queue = new AutopostQueue();
$queue->setItemId($item->getId());
$queue->save();
ちなみに、トリガーでアクションを行うこともできます。schema.yml
ただし、Doctrineがトリガーを解析してモデルやフォームなどを生成するため、内部でトリガーを定義できるとは思いません。ただし、trigger.sql
ディレクトリ内でファイルを定義する/data/sql
と、次の呼び出し時に自動的に読み込まれます。
php symfony doctrine:insert-sql