web-dev-qa-db-fra.com

Comment vérifier si la ligne est supprimée en douceur dans Eloquent?

Dans Laravel 5.1 existe-t-il un bon moyen de vérifier si un objet modèle éloquent a été supprimé en douceur? Je ne parle pas de sélectionner des données mais une fois que j'ai l'objet, par exemple Thing::withTrashed()->find($id)

Jusqu'à présent, la seule façon dont je peux voir est

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

Je ne vois aucune méthode pertinente dans l'API qui permettrait par exemple

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

Je viens de réaliser que je cherchais dans la mauvaise API. La classe Model n'a pas cela, mais le trait SoftDelete que mes modèles utilisent a une méthode trashed().

Je peux donc écrire

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

Dans laravel6, vous pouvez utiliser les éléments suivants.

Pour vérifier que le modèle Eloquent utilise la suppression logicielle:

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

Pour vérifier que le modèle Eloquent utilise la suppression logicielle dans la ressource (lors de l'utilisation de la ressource pour répondre):

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

Et enfin pour vérifier si le modèle est jeté:

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

J'espère que cela vous sera utile!

1
tanvir993