CakePHP バージョン 2.8.4
論理削除利用ビヘイビア SoftDeleteBehavior(https://github.com/CakeDC/utils/blob/master/Model/Behavior/SoftDeleteBehavior.php)
以上の環境でWebアプリを開発しています。
結論から言うと、論理削除されるべき部分が物理削除されてしまいます。
●状況
SoftDeleteBehavior.php内のbeforeDeleteメソッド、実際に論理削除をしているdeleteメソッド内での動きを追いかけたところ、問題なく論理削除をされていました。(Deletedカラムにtrue(1)が入っている)
しかし結果として物理削除されてしまっています。
そこで実際にデリートをしているコントローラーのアクションの内部で、$this->モデル名->delete()をしている直後に
php
1debug($this->モデル名->getDataSource()->getLog());
としてSQLを確認したところ、やはりupdateされた上で、再度deleteされていることが確認されました。
そうなると、大元のCakePHPのデリート行為をビヘイビアで止められていないということなのでしょうが、なぜうまく止まってくれないのかがわかりません。
●行った設定
/app/Model/Behavior内に「SoftDeleteBehavior.php」ファイルを設置
AppModel.phpのAppModelクラス内に
php
1public $actsAs = array( 'SoftDelete' );
を記述。
DBの該当テーブルに
「deleted」(tinyInt型(1) デフォルト0)
「deleted_date」(datetime型)
を設定。
Model、Controller、ViewはBakeしたデフォルトのまま使用。
どなたかきっかけになりそうなヒントだけでもいいので、情報をご存じの方はご享受ください。
必要情報で不足がありましたら、提示いただければ追記します。
よろしくお願いします。
・追記
同じ症状に悩まされた方いらっしゃいますか?
またその場合「根本的な解決はしなかったけれど、こういう方法で回避した」という例もあればお教え下さい。
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/05/20 13:27 編集
2016/05/20 07:40 編集
2016/05/20 08:08
2016/05/20 09:56
2016/05/20 11:00
2016/05/20 13:17