[英]How to immediately disable access to a user that is soft-deleted or no longer enabled?
[英]How to check if row is soft-deleted in Eloquent?
刚刚意识到我正在寻找错误的 API。 Model 类没有这个,但是我的模型使用的SoftDelete 特性有一个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
}
希望,这会有所帮助!
对于那些在测试环境中寻求答案的人,在 laravel 的测试用例中,您可以断言为:
$this->assertSoftDeleted($user);
或者如果它刚刚被删除(没有软删除)
$this->assertDeleted($user);
这是最好的方法
$model = 'App\\Models\\ModelName';
$uses_soft_delete = in_array('Illuminate\Database\Eloquent\SoftDeletes', class_uses($model));
if($usesSoftDeletes) {
// write code...
}
这对我有用
$checkDomain = Domain::where('tenant_id', $subdomain)->withTrashed()->first();
if($checkDomain->trashed()){
return redirect()->route('domain.not.found');
}else{
return view('frontend.' . theme() . '.index');
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.