Laravel 用于软删除的雄辩还原()函数无法还原

Laravel 用于软删除的雄辩还原()函数无法还原,laravel,eloquent,Laravel,Eloquent,我最近在我的用户模型上添加了软删除,其中的删除部分工作得很好,但是当我尝试恢复时,出现了一个错误,即在非对象上调用成员函数restore 我恢复软删除用户的代码如下: public function putActivateUser() { $user = Emp::onlyTrashed()->where('id', '=', Input::get('actEmpId'))->first(); $user->restore();

我最近在我的用户模型上添加了软删除,其中的删除部分工作得很好,但是当我尝试恢复时,出现了一个错误,即在非对象上调用成员函数restore

我恢复软删除用户的代码如下:

public function putActivateUser()
    {
        $user = Emp::onlyTrashed()->where('id', '=', Input::get('actEmpId'))->first();
        $user->restore();

        return Redirect::route('user_data')
        ->with('message', 'Bruker '.$user->user_name.' aktivert.');
    }
用户激活的表单:

{{ Form::open(array('url' => 'bassengweb/ressurect_user', 'method' => 'PUT')) }} 
        {{ Form::select('actEmpId', $deactEmps) }}
        {{ Form::submit('Aktiver Bruker') }}
{{ Form::close() }}

$user上的dd由于某种原因返回null,但我不明白为什么。

显然,表单中id为的用户在onlyTrashed作用域中找不到。 例如,您应该检查查询run DB::getQueryLog和数据库中的数据,但首先将方法更改为firstOrFail:


如果找不到任何内容,它将抛出ModelNotFoundException,因此您可以捕获它并执行任何需要的操作,从而避免在出现null错误时调用方法。

显然,表单中id为的用户在onlyTrashed作用域中找不到。 例如,您应该检查查询run DB::getQueryLog和数据库中的数据,但首先将方法更改为firstOrFail:

如果未找到任何内容,它将抛出ModelNotFoundException,所以您可以捕获它并执行所需的任何操作,从而避免在出现null错误时调用方法。

尝试此方法

Emp::withTrashed()->where('id','=',Input::get('actEmpId'))->restore();
试试这个

Emp::withTrashed()->where('id','=',Input::get('actEmpId'))->restore();

嘿,当我把->第一次改为->第一次或失败时,它似乎起作用了。但奇怪的是,我第一次运行它时,它激活了列表中的每个人,而不仅仅是一个人,但现在它似乎起作用了。你知道为什么吗?。非常感谢!它不应该这样做,除非您使用get而不是first,而且碰巧Input::get'..为null。将first更改为firstOrFail并不是工作或不工作的原因,所以DB或input中的数据肯定有问题。对,现在重新测试它。适用于first和firstOrFail,get返回错误。谢谢嘿,当我把->第一次改为->第一次或失败时,它似乎起作用了。但奇怪的是,我第一次运行它时,它激活了列表中的每个人,而不仅仅是一个人,但现在它似乎起作用了。你知道为什么吗?。非常感谢!它不应该这样做,除非您使用get而不是first,而且碰巧Input::get'..为null。将first更改为firstOrFail并不是工作或不工作的原因,所以DB或input中的数据肯定有问题。对,现在重新测试它。适用于first和firstOrFail,get返回错误。谢谢