onDelet:cascade @propel

従属オブジェクトで delete メソッドを override しているような場合は onDelete:cascade は使わず手で組んだ方が早い。

  • Peer::doDelete が呼ばれるのでそちらを override する必要がある
  • 第一引数 $values (criteria) に対して $values->keys してチェックすると、上位オブジェクトの ID のみが得られる
  • 上位オブジェクト a の削除時に従属するオブジェクト b の onDelete が呼ばれてるぽい
  • Propel オブジェクト側で delete を override していてもそちらは無視される

SQL は効率化されているのだろうけど、処理効率よりオブジェクトの振る舞いを尊重して欲しい。ぎぎぎ。