如何验证用户是否被软删除或销毁

时间:2017-06-30 10:58:06

标签: php controller laravel-5.4

所以我开始了前端开发的道路。我有一个包含用户描述的表和一个用于更改用户状态的按钮。除验证之外的所有工作都正常,状态正在更改并且页面正确刷新。这是我的代码......

Close()

我将解释我在逻辑上发现的重要内容

if(isset($ usernames)) - >验证通过AJAX请求发送的用户名是否有效

if(!$ user-> get()) - >验证用户是否在数据库中

(!$ user-> get() - > isEmpty()) - >验证用户是否被软删除

我最终想要添加一个功能,其中一个管理员可以销毁一个条目,虽然这样工作正常,页面刷新,用户消失我想我应该警告用户状态没有改变,在数据库中找不到用户。但是 if(!$ user-> get())会被忽略,即使我手动从数据库中删除用户然后运行脚本...一直在搜索数据库API但却一无所获。我做错了什么?

TIA

编辑:为了澄清一点,这里有一些图片来举例说明

用户在dabatase中(按预期工作) enter image description here

我从数据库中删除了用户(数据库按ID排序) enter image description here

结果仍然相同(不按预期工作) enter image description here

当我刷新页面时,条目消失了(显示我实际上是从数据库中删除条目) enter image description here

2 个答案:

答案 0 :(得分:0)

来自Laravel soft deleting

  

除了实际删除数据库中的记录外,Eloquent还可以"软删除"楷模。模型被软删除后,实际上不会从数据库中删除它们。而是在模型上设置deleted_at属性并将其插入到数据库中。如果模型具有非null的deleted_at值,则模型已被软删除。要为模型启用软删除,请使用模型上的Illuminate\Database\Eloquent\SoftDeletes特征。

您的用户模型必须包含SoftDeletes特征,例如:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;

class User extends Model
{

    use SoftDeletes;
    // ...

要检查用户是否被软删除,请使用trashed方法:

<?php

$users = App\User::withTrashed()->get();
foreach ($users as $user) {
    if ($user->trashed()) {
        // this user is soft deleted
    } else {
        // this user is not deleted
    }
}

$users以外的任何内容都被删除了。

您可以通过执行以下操作来恢复任何软删除的记录:

$user->restore();

答案 1 :(得分:0)

如果要从已删除的记录中恢复(软),则需要使用withTrashed 在中使用 User::withTrashed()->Where('username', '=', $usernames)->restore();