web-dev-qa-db-ja.com

Eloquentで行がソフト削除されているかどうかを確認する方法は?

Laravel 5.1では、雄弁なモデルオブジェクトがソフト削除されたかどうかを確認する良い方法はありますか?データの選択について話しているのではなく、オブジェクトを取得したらThing::withTrashed()->find($id)

これまでのところ、私が見ることができる唯一の方法は

if ($thing->deleted_at !== null) { ... }

関連するメソッドが表示されない API内 たとえば、

if ($thing->isDeleted()) { ... }
38
DisgruntledGoat

間違ったAPIを探していることに気づきました。 Modelクラスにはこれはありませんが、モデルが使用する SoftDelete trait にはtrashed()メソッドがあります。

だから私は書くことができます

if ($thing->trashed()) { ... }
66
DisgruntledGoat

Laravel6では、以下を使用できます。

Eloquentモデルがソフト削除を使用していることを確認するには:

if( method_exists($thing, 'trashed') ) {
    // do something
}

Eloquentモデルがリソースでソフト削除を使用していることを確認するには(リソースを使用して応答する場合):

if( method_exists($this->resource, 'trashed') ) {
    // do something
}

そして最後に、モデルが破棄されているかどうかを確認します。

if ($thing->trashed()) {
    // do something
}

これがお役に立てば幸いです。

1
tanvir993