2016-12-01 90 views
0

我試圖更新數據庫中的數據,但我一直收到錯誤。Laravel調用未定義的方法

調用未定義的方法照亮\數據庫\查詢\生成器::保存()

這裏是我的代碼:

public function postTodo(Request $request){ 
    if ($request->input('action') == 'set_as_done'){ 
     $thing = DB::Table('todo')->where('id', $request->input('id')); 
     if ($thing){ 
      $thing->done = $request->input('set_as_done'); 
      $thing->save(); 
     } 
     return redirect(route('admin.todo')); 
    } 
} 

回答

0

保存方法適用於雄辯模型不是生成器,你的代碼需要激發更新查詢而不是保存

我會建議創建Eloquent模型待辦事項然後用save()方法編寫代碼,這比使用save()方法更有意義唱建設者

public function postTodo(Request $request){ 
    if ($request->input('action') == 'set_as_done'){ 
     $thing = DB::table('todo')->where('id', $request->input('id'))->first(); 
     if ($thing){ 
      DB::table('todo')->where('id', $request->input('id'))->update([ 
       'set_as_done' => $request->input('set_as_done') 
      ]); 
     } 
     return redirect(route('admin.todo')); 
    } 
} 
1

要做到$thing->save()$thing必須是擴展ModelArdent模型的實例。

當你做$thing = DB::Table('todo')->where('id', $request->input('id'));$thing變量是一個集合,與模型無關。

您必須對Thing.php的模型,那麼你可以這樣做:

$thing = Thing::where('id', $request->input('id')); 
if ($thing){ 
    $thing->done = $request->input('set_as_done'); 
    $thing->save(); 
} 
0

我建議你創建一個使用PHP工匠化妝臺待辦事項型號:型號TodoModel。

<?php namespace App; use Illuminate\Database\Eloquent\Model; class Todo extends Model{ protected $table = 'todo'; } 

之後,您可以使用Todo保存您的數據。

public function postTodo(Request $request){ 
if ($request->input('action') == 'set_as_done'){ 
    $thing = Todo->find('id', $request->input('id')); 
    if ($thing){ 
     $thing->set_as_done = $request->input('set_as_done') 
     $thing->save(); 
    } 
    return redirect(route('admin.todo')); 
} 

}

相關問題