你确定这postInsert
不起作用吗?
我在我的一个项目中使用了这个片段(在里面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