2

コハナ3.2ORMにカスケード削除の方法はありますか?私はコハナの初心者なので、誰かがこの問題で私を助けることができますか?

4

2 に答える 2

2

コハナにはないのではないかと思います。本当に必要な場合は、データベースレベルで適用する必要があります(ON DELETE CASCADE

于 2012-11-26T13:34:23.043 に答える
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()次に、削除するモデルのメソッドをオーバーライドすることで、さらにカスケードできます。

于 2012-12-15T05:16:46.543 に答える