Backport(バックポート) #1471
完了
error at the application cascading of doctrine.(Doctrineのカスケーディングデリート 時にエラーになる)
Masato Nagasawa さんが14年以上前に追加.
ほぼ14年前に更新.
説明
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 }
関連するチケット
1 (0件未完了 — 1件完了)
- 対象バージョン を OpenPNE 3.7.0 から OpenPNE 3.4.7 に変更
- トラッカー を Bug(バグ) から Backport(バックポート) に変更
- 題名 を Doctrineのカスケーディングデリート 時にエラーになる から error at the application cascading of doctrine.(Doctrineのカスケーディングデリート 時にエラーになる) に変更
- 担当者 を Masato Nagasawa にセット
- ステータス を New(新規) から Pending Review(レビュー待ち) に変更
- 進捗率 を 0 から 50 に変更
- ステータス を Pending Review(レビュー待ち) から Accepted(着手) に変更
- ステータス を Accepted(着手) から Pending Review(レビュー待ち) に変更
- ステータス を Pending Review(レビュー待ち) から Rejected(差し戻し) に変更
- 担当者 を Masato Nagasawa から Shinichi Urabe に変更
- ステータス を Rejected(差し戻し) から Pending Review(レビュー待ち) に変更
- ステータス を Pending Review(レビュー待ち) から Pending Fixing(修正待ち) に変更
- 担当者 を Shinichi Urabe から Masato Nagasawa に変更
- 対象バージョン を OpenPNE 3.4.7 から OpenPNE 3.4.8 に変更
- 対象バージョン を OpenPNE 3.4.8 から OpenPNE 3.4.9 に変更
- ステータス を Pending Fixing(修正待ち) から Pending Review(レビュー待ち) に変更
- ステータス を Pending Review(レビュー待ち) から Pending Testing(テスト待ち) に変更
- 進捗率 を 50 から 70 に変更
- ステータス を Pending Testing(テスト待ち) から Fixed(完了) に変更
- 進捗率 を 70 から 100 に変更
他の形式にエクスポート: Atom
PDF