Php 如何使用Doctrine在Symfony 1.4中进行后期插入?

Php 如何使用Doctrine在Symfony 1.4中进行后期插入?,php,symfony-1.4,doctrine-1.2,Php,Symfony 1.4,Doctrine 1.2,我有一个表(称之为表a),它需要在创建表a记录时创建多个附加的子记录。删除表A记录应删除表B记录 使用schema.yml中的DELETE CASCADE上的删除记录很容易,但是添加记录并不是那么简单。重写Doctrine\u Record::postInsert不会执行此操作,因为表A记录还没有ID。重写Doctrine\u Formsave也不能做到这一点 EventListener是前进的方向还是数据库触发器?如果是前者,你有没有一个例子?如果是后者,是否可以在schema.yml中以某种

我有一个表(称之为表a),它需要在创建表a记录时创建多个附加的子记录。删除表A记录应删除表B记录

使用
schema.yml
中的DELETE CASCADE上的
删除记录很容易,但是添加记录并不是那么简单。重写
Doctrine\u Record::postInsert
不会执行此操作,因为表A记录还没有ID。重写
Doctrine\u Form
save也不能做到这一点


EventListener
是前进的方向还是数据库触发器?如果是前者,你有没有一个例子?如果是后者,是否可以在
schema.yml
中以某种方式指定触发器?

是否确定
postInsert
不起作用

我在我的一个项目中使用了这个代码片段(在
表.class.php
中):

我传播了一个关于一个新项目的事件。然后,我在配置中捕获此事件:

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
中定义触发器,因为我们可以解析它来生成模型、表单等。。但是您可以在
/data/sql
目录中定义一个
trigger.sql
文件,当您调用:

php symfony doctrine:insert-sql
php symfony doctrine:insert-sql