2015-11-30 10 views
17

In Laravel 5.1 gibt es eine gute Möglichkeit zu überprüfen, ob ein eloquentes Modellobjekt weich gelöscht wurde? Ich spreche nicht über die Auswahl von Daten, aber sobald ich das Objekt z. Thing::withTrashed()->find($id)Wie überprüft man, ob die Zeile in Eloquent gelöscht wird?

Bisher ist die einzige Art, wie ich sehen kann, ist

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

Ich sehe keine relevanten Verfahren in the API, die zum Beispiel

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

Antwort

35

Gerade wurde mir klar, war auf der Suche in die falsche API erlauben würde, . Die Modellklasse hat dies nicht, aber die SoftDelete trait, die meine Modelle verwenden, hat eine trashed() Methode.

So kann ich schreiben

if ($thing->trashed()) { ... } 
+0

Vielleicht 5.2 ist anders, aber ich versuchte dies und es hat nicht funktioniert. Stattdessen, als ich versuchte, $ ding zu bekommen, wo es weich gelöscht wurde, gab Laravel null zurück, also überprüfte ich 'if ($ thing == null) ' –

+0

@ZacharyWeixelbaum Hast du' withTrashed() 'benutzt, um das Item zu holen, wie ich in der Frage erwähnt? Sonst werden Sie keine gelöschten Datensätze erhalten. – DisgruntledGoat

+0

Sie haben Recht, ich habe das nicht gesehen. –