操作
Backport(バックポート) #1501
完了error at the application cascading of doctrine.(Doctrineのカスケーディングデリート 時にエラーになる)
開始日:
2010-08-03
期日:
進捗率:
0%
予定工数:
説明
Overview (現象)¶
Doctrine側でカスケーディングデリートを有効にした場合、日記を削除しようとするとエラーになります。
Causes (原因)¶
lib/behavior/opApplicationLevelCascadingListener.class.php の 32行目でエラーになっており、
$record が空の配列であるにも関わらずdelete()を呼んでいてメソッドが解決できずエラーとなっています。
Way to fix (修正内容)¶
$relations が Doctrine_Collection でない場合に array($relations) としているのが原因で、
この場合、$relationsが空の配列であった場合に要素数が1となってしまい、foreach で空の $record を処理してしまいます。
22 if (!($relations instanceof Doctrine_Collection)) 23 { 24 $relations = array($relations); 25 }
以下のようにして配列の要素数が0であった場合、continue するように対処するのが良いのではと思います。
22 if (!($relations instanceof Doctrine_Collection)) 23 { if (!count($relations)) { continue; } 24 $relations = array($relations); 25 }
Masato Nagasawa さんが14年以上前に更新
- 題名 を Doctrineのカスケーディングデリート 時にエラーになる から error at the application cascading of doctrine.(Doctrineのカスケーディングデリート 時にエラーになる) に変更
Masato Nagasawa さんが14年以上前に更新
- ステータス を New(新規) から Pending Review(レビュー待ち) に変更
- 進捗率 を 0 から 50 に変更
更新履歴 8039069d09eb485f41998383896538d21e8b6b5e で適用されました。
操作