如何检查行是否在 Eloquent 中被软删除?

在Laravel 5.1中,有没有一种很好的方法来检查一个雄辩的模型对象是否已被软删除?我不是在谈论选择数据,而是一旦我有了对象,例如Thing::withTrashed()->find($id)

到目前为止,我能看到的唯一方式是

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

我在API中没有看到任何允许例如的相关方法

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

答案 1

只是意识到我在错误的API中寻找。Model 类没有这个,但我的模型使用的 SoftDelete 特征有一个方法。trashed()

所以我可以写

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

答案 2

在 laravel6 中,您可以使用以下内容。

要检查雄辩模型是否使用软删除:

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

要检查雄辩模型是否在资源中使用软删除(当使用资源进行响应时):

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

最后检查模型是否被丢弃:

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

希望,这将是有帮助的!


推荐