2016-12-01 61 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')); 
} 

}

相关问题