2014-04-29 31 views
3

我最近在我的用户模型中添加了软删除,删除部分完美工作,但是当我尝试恢复时,出现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() }} 

在$用户A DD出于某种原因返回null,但我看不出为什么。

回答

1

显然用户与表格中的编号没有找到与onlyTrashed范围。 您应该检查查询(运行DB :: getQueryLog()为例)和数据在你的数据库,但首先的方法更改为firstOrFail

$user = Emp::onlyTrashed()->where('id', '=', Input::get('actEmpId'))->firstOrFail(); 

它会抛出ModelNotFoundException如果没有被发现,所以你可以抓住它并做任何需要的事情,从而避免对空错误调用方法。

+0

嘿,它似乎工作的时候,我改变 - >第()来 - > firstOrFail()。 虽然有一件很奇怪的事,我第一次运行它时,它激活了列表中的所有人,而不仅仅是一个,但它现在似乎正在工作(任何想法为什么?)。谢谢一堆! – user249494

+0

它不应该这样做,除非你使用get()而不是第一次,偶然Input :: get('..')为null。改变'first()'为'firstOrFail()'不是工作或不工作的原因,所以在数据库或输入数据中肯定有问题。 –

+0

对,现在重新测试。适用于first()和firstOrFail(),get()返回错误。谢谢! – user249494

1

试试这个

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

这也可以,谢谢! – user249494