2016-12-01 22 views
0

DB内のデータを更新しようとしていますが、エラーが発生しています。未定義のメソッドを照らし\ Databaseへ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()メソッドでコードを書く$thing->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

を歌う、$thingModelArdentを拡張したモデルのインスタンスでなければなりません。

$thing = DB::Table('todo')->where('id', $request->input('id'));を入力すると、$thingという変数はモデルに関係なくコレクションになります。

あなたはThing.phpのためのモデルを作る必要があり、あなたがこれを行うことができます:モデルTodoModel:

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

を私はPHP職人メイクを使用して、テーブルのTODOのためのモデルを作成することをお勧めします。

<?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')); 
} 

}

関連する問題