在Laravel 5.1中,有一种很好的方法来检查一个雄辩的模型对象是否被软删除了吗?我不是在谈论选择数据,而是一旦我拥有了对象,例如/manchester/cakephp-developers-dance-to-beyonce
到目前为止,我能看到的唯一方法是
Thing::withTrashed()->find($id)
我没有看到任何允许例如
的相关方法in the APIif ($thing->deleted_at !== null) { ... }
答案 0 :(得分:53)
刚刚意识到我在寻找错误的API。 Model类没有这个,但我的模型使用的SoftDelete trait有trashed()
方法。
所以我可以写
if ($thing->trashed()) { ... }
答案 1 :(得分:5)
在laravel6中,您可以使用以下内容。
要检查雄辩模型是否正在使用软删除:
trackByFn(index) {
return index;`enter code here`
要检查Eloquent模型是否在资源中使用软删除(使用资源进行响应时):
if( method_exists($thing, 'trashed') ) {
// do something
}
最后检查模型是否被破坏:
if( method_exists($this->resource, 'trashed') ) {
// do something
}
希望,这会有所帮助!
答案 2 :(得分:0)
对于那些在 Laravel 的测试用例中寻求测试环境答案的人 您可以断言为:
$this->assertSoftDeleted($user);
或者如果它只是被删除(没有软删除)
$this->assertDeleted($user);
答案 3 :(得分:0)
这对我有用
$checkDomain = Domain::where('tenant_id', $subdomain)->withTrashed()->first();
if($checkDomain->trashed()){
return redirect()->route('domain.not.found');
}else{
return view('frontend.' . theme() . '.index');
}
答案 4 :(得分:0)
这是最好的方法
$model = 'App\\Models\\ModelName';
$uses_soft_delete = in_array('Illuminate\Database\Eloquent\SoftDeletes', class_uses($model));
if($usesSoftDeletes) {
// write code...
}