2014-04-29 59 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