Php 如何使用Doctrine在Symfony 1.4中进行后期插入?
我有一个表(称之为表a),它需要在创建表a记录时创建多个附加的子记录。删除表A记录应删除表B记录 使用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中以某种
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