Kohana ORM级联删除

时间:2012-11-22 14:00:08

标签: kohana kohana-orm kohana-3.2

Kohana 3.2 ORM中是否有任何方法可用于级联删除。我是kohana的初学者,所以任何人都可以帮助我解决这个问题吗?

2 个答案:

答案 0 :(得分:2)

我担心Kohana没有。如果您确实需要一个,则应在数据库级别(ON DELETE CASCADE

上应用它

答案 1 :(得分:1)

要级联删除,请覆盖模型中的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()方法进一步级联。