【问题标题】:Update Table Using Laravel Model使用 Laravel 模型更新表
【发布时间】:2016-05-18 17:21:06
【问题描述】:

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

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'
];

}

所以我有一个表格,它给出了所有位置的数据,并给出了数据库中记录的 id。在我的控制器中,我有:

public function storeFirstTeam()
{
    $input = Request::all();

    Selection::update($input->id,$input);

    return redirect('first-team');
}

但我收到以下错误:

不应静态调用非静态方法 Illuminate\Database\Eloquent\Model::update(),假设 $this 来自不兼容的上下文

谁能指出我的愚蠢错误?

【问题讨论】:

  • 您必须先选择要更新的行。当您发布更新请求时,您将如何获得所选内容的id
  • 试试这样的:Selection::whereId($id)->update($request->except(['_method','_token']));

标签: laravel model eloquent


【解决方案1】:

你应该像下面给出的例子那样写它:

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】:

    错误消息告诉你你知道的一切:你试图静态调用一个方法(使用双冒号),而这并不意味着。

    update() 方法是在模型实例上调用的,所以首先你需要检索一个:

    $selection = Selection::find($id);
    

    然后您可以在上面使用update() 方法:

    $selection->update($request->all());
    

    【讨论】:

      【解决方案3】:

      请检查下面的代码,这将解决您的问题:

      Selection::whereId($id)->update($request->all());
      

      【讨论】:

      • 如果出现问题,这种方法update() 会得到rollBack吗?如果它在DB::beginTransaction() 之间
      • 请求可以包含一些自定义字段,例如表单我这样放置数组:Foydabaranda::whereId($request->id_eslox)->update([ 'login' => $request->login_eslox, 'parol' => $request->parol_eslox, 'tuKiTu' => $request->xeli_tochka, ]); 也可以按我的意愿工作。
      【解决方案4】:

      您也可以简单地手动更新字段:

      Model::where('id',$id)->update(['english_name' => $english_name,'name' => $name]);
      

      【讨论】:

      猜你喜欢
      • 2017-03-16
      • 1970-01-01
      • 2016-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-01
      相关资源
      最近更新 更多