Laravel 5.1では、雄弁なモデルオブジェクトがソフト削除されたかどうかを確認する良い方法はありますか?データの選択について話しているのではなく、オブジェクトを取得したらThing::withTrashed()->find($id)
これまでのところ、私が見ることができる唯一の方法は
if ($thing->deleted_at !== null) { ... }
関連するメソッドが表示されない API内 たとえば、
if ($thing->isDeleted()) { ... }
間違ったAPIを探していることに気づきました。 Modelクラスにはこれはありませんが、モデルが使用する SoftDelete trait にはtrashed()
メソッドがあります。
だから私は書くことができます
if ($thing->trashed()) { ... }
Laravel6では、以下を使用できます。
Eloquentモデルがソフト削除を使用していることを確認するには:
if( method_exists($thing, 'trashed') ) {
// do something
}
Eloquentモデルがリソースでソフト削除を使用していることを確認するには(リソースを使用して応答する場合):
if( method_exists($this->resource, 'trashed') ) {
// do something
}
そして最後に、モデルが破棄されているかどうかを確認します。
if ($thing->trashed()) {
// do something
}
これがお役に立てば幸いです。