我最近在我的用户模型中添加了软删除功能,删除部分完美无缺,但是当我尝试恢复时,我收到的错误是Call to a member function restore() on a non-object
。
我恢复软删除用户的代码如下:
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,但我不明白为什么。
答案 0 :(得分:2)
试试这个
Emp::withTrashed()->where('id','=',Input::get('actEmpId'))->restore();
答案 1 :(得分:1)
显然,在onlyTrashed
范围内找不到表单中包含id的用户。
您应该检查查询(例如,运行DB :: getQueryLog())和数据库中的数据,但首先将方法更改为firstOrFail
:
$user = Emp::onlyTrashed()->where('id', '=', Input::get('actEmpId'))->firstOrFail();
如果找不到任何内容,它将抛出ModelNotFoundException
,因此您可以捕获它并执行任何需要的操作,从而避免在null错误时调用方法。