1

有没有办法在 Symfony 1.4 中链接 preDelete() 事件?

我有两张桌子:一张主人和一张奴隶。在 schema.yml 中,我定义了它们,以便在删除主记录时从属记录 CASCADE 删除。

而且,从属删除过程需要运行一些预处理,我打算在从属记录定义的 preDelete 事件方法中进行编码。

如果我单独删除从属记录,我可以得到这个 preDelete() 事件,但如果我通过主记录删除从属记录,我只能访问主记录定义中的 preDelete() 事件。我可以通过master的方式访问slave中的preDelete事件吗?

相关代码如下:

架构.yml

Master:
  relations:
    Slave:

Slave:
  relations:
    Master:
      onDelete: CASCADE

lib/model/doctrine/Master.class.php

class Master extends BaseMaster
{
  public function preDelete($event)
  {
    //master predelete processing...
  }
}

lib/model/doctrine/Slave.class.php

class Slave extends BaseSlave
{
  public funcion preDelete($event)
  {
    //slave predelete processing...
  }
}
4

1 回答 1

3

这是行不通的,因为“onDelete: CASCADE”是一个数据库事件,因此无法将它与您的代码挂钩。为此,您需要使用应用程序级联删除,但效率较低。

Slave:
  columns:
    master_id: integer

Master:
  columns: ~
  relations:
    Slave:
      local: id
      foreign: master_id
      type: many
      foreignType: one
      cascade: [delete]

另请注意,在这种情况下,您必须在对面定义关系。

于 2011-02-22T00:39:02.290 回答