我有一张运动队的桌子。该记录显示了团队选择和其他一些信息。我想用团队选择更新记录。因此我的模型是:
class Selection extends Model {
protected $table = "selection";
protected $fillable = [
'loose',
'hooker',
'tight',
'secrow1',
'secrow2',
'blindflank',
'openflank',
'eight',
'scrum',
'fly',
'leftwing',
'rightwing',
'fullback',
'sub1',
'sub2',
'sub3',
'sub4',
'sub5'
];
}
所以我有一个表单,它给出了位置的所有数据,并给出了DB中记录的id。在我的控制器中,我得到了:
public function storeFirstTeam()
{
$input = Request::all();
Selection::update($input->id,$input);
return redirect('first-team');
}
但是我收到以下错误:
非静态方法Illuminate \ Database \ Eloquent \ Model :: update()不应该静态调用,假设$ this来自不兼容的上下文
有人能指出我的愚蠢错误吗?
答案 0 :(得分:19)
请检查以下代码,这样可以解决您的问题:
Selection::whereId($id)->update($request->all());
答案 1 :(得分:2)
你应该像下面给出的例子那样写:
Selection::where('id', $input['id'])->update($input);
// Or use this using dynamic where
Selection::whereId($input['id'])->update($input);
或者,您也可以这样写:
Selection::find($input['id'])->fill($input)->save();
答案 2 :(得分:1)
错误消息告诉您所知道的一切:您正试图静态调用一个方法(使用双冒号)。
update()
方法是在模型实例上调用的,所以首先需要检索一个:
$selection = Selection::find($id);
然后您可以使用update()
方法:
$selection->update($request->all());