Каскадное удаление Kohana ORM

Есть ли какой-нибудь метод в Kohana 3.2 ORM для каскадного удаления. Я новичок в Kohana, поэтому кто-нибудь может мне помочь в этом вопросе?


person minhas    schedule 22.11.2012    source источник


Ответы (2)


Боюсь, в Кохане его нет. Если он вам действительно нужен, вы должны применить его на уровне базы данных (НА КАСКАД УДАЛЕНИЯ)

person matino    schedule 26.11.2012

Для каскадного удаления переопределите метод delete() в вашей модели:

class Model_Alpha extends ORM
{
  protected $_has_many = array(
    'beta' => array(
      'model' => 'beta',
      'foreign_key' => 'alpha_id',
    ),
    'gamma' => array(
      'model' => 'gamma',
      'foreign_key' => 'alpha_id',
    ),
  );

  function delete()
  {
    foreach($this->beta->find_all() as $entry)
      $entry->delete();
    foreach($this->gamma->find_all() as $entry)
      $entry->delete();
    parent::delete();
  }
}

Затем вы можете каскадировать дальше, переопределив метод delete() для моделей, которые вы удаляете.

person EricMakesStuff    schedule 15.12.2012