2010-12-17 9 views
4

SoftDeletable Behaviorの代替手段は誰でも知っていますか?ケーキ1.3.xと互換性がありますか?SoftDeletable Behaviorの代わりにCakePHP 1.3?

利用可能な動作がない場合は、最新のCakeでこれをどうやってやっているかについての提案はありますか?


速いハックを見つけました。まず、あなたのテーブルがを導入した場合、tinyint(1)符号なしという名前のフィールドが削除されました。がデフォルトでになりました。次の関数でアプリ/ app_model.php

、追加:

function softDelete($id) { 
    if($id && $this->hasField('deleted')) { 
     $this->id = $id; 
     return $this->saveField('deleted', 1); 
    } 

    return false; 
} 

してから、コントローラのメソッドからの呼び出し(つまり、削除を実行します)、

$this->Model->softDelete($id); 

キャッチがあるが、 find()を実行すると、条件が削除されました!= 1を指定する必要があります。

SoftDeletableビヘイビアと同じ方法でこれを実装する方法をまだ検討しようとしています。

答えて

5

私はmarianoの動作を1.3に変更しました。ここをクリックしてください - https://github.com/evilbloodydemon/cakephp-softdeletable2

+0

恐ろしい男:)あなたの努力を感謝します。 –

+0

こんにちは、私は私のプロジェクトであなたのコードを試してみました - しかし、レコードは、削除されたフィールドの代わりにハードに削除されているように見える0に設定されている。私はあなたのコードは、 'field'は私のテーブルの 'deleted'フィールドを指します。それでもコントローラからdelete()メソッドを呼び出すと、ハード削除が行われます。私はここで何かを逃していますか? –

+0

気にしないでください。シンプルなタイプミス。私は$ actsAsの代わりに$ actAsを使用していました。 –

関連する問題