使用Laravel模型更新表

时间:2016-02-08 21:43:52

标签: laravel model eloquent

我有一张运动队的桌子。该记录显示了团队选择和其他一些信息。我想用团队选择更新记录。因此我的模型是:

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来自不兼容的上下文

有人能指出我的愚蠢错误吗?

3 个答案:

答案 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());