0

ユーザーがモデルの削除されたインスタンスを復元できるように、cakeDC/utils SoftdeleteBehavior を使用しようとしています。

ソフト削除はこれまでのところ正常に機能していますが、削除されたモデルのインスタンスも表示できるようにしたいと考えています。

findById($id) でインスタンスを見つけようとしましたが、チェックする動作の beforeFind メソッドを呼び出すためdeleted = true、インスタンスが返されません。

SQL を直接使用せずに取得する他の方法はありますか?

編集: Cakephp-2.4.9 を使用しています

4

1 に答える 1

0

1 つの方法は、その特定の検索呼び出しの動作を一時的に無効にすることです。

$enabled = $YourModel->Behaviors->enabled('SoftDelete');
if($enabled) {
    $YourModel->Behaviors->disable('SoftDelete');
}

$result = $YourModel->findById($id);

if($enabled) {
    $YourModel->Behaviors->enable('SoftDelete');
}

コードを見ると、フラグの状態によってレコードを明示的に取得することもできるはずです。つまり、次のようなものです。

$YourModel->findByIdAndDeleted($id, true);

もうまくいくかもしれません。ただし、もちろん、これが適用できるかどうかは、特定のユース ケースによって異なります。

于 2014-08-15T09:23:59.307 に答える