Symfony 1.4 связывает события preDelete для связанных таблиц - PullRequest
1 голос
/ 21 февраля 2011

Есть ли способ связать события preDelete () в Symfony 1.4?

У меня есть две таблицы: одна ведущая и одна ведомая. В schema.yml я определил их так, чтобы ведомые записи CASCADE удаляли, когда удалялась основная запись.

Кроме того, процесс удаления подчиненного устройства должен запускать некоторую предварительную обработку, которую я намереваюсь кодировать в методе события preDelete определения подчиненной записи.

Если я удаляю только ведомую запись, я могу попасть в это событие preDelete (), но если я удаляю ведомую запись через основную запись, я получаю доступ только к событию preDelete () в определении основной записи. Могу ли я получить доступ к событию preDelete в подчиненном устройстве через ведущее?

Соответствующий код следует:

schema.yml

Master:
  relations:
    Slave:

Slave:
  relations:
    Master:
      onDelete: CASCADE

Библиотека / модель / учение / Master.class.php

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

Библиотека / модель / учение / Slave.class.php

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

1 Ответ

3 голосов
/ 22 февраля 2011

Это не сработает, потому что "onDelete: CASCADE" - это событие базы данных, поэтому нет способа привязать его к вашему коду. Чтобы это сделать, вам нужно использовать каскадное удаление приложений, которое менее эффективно.

Slave:
  columns:
    master_id: integer

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

Обратите внимание, что в этом случае вам придется определить отношение на противоположной стороне.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...