You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel调用Model::update()报非静态方法不应静态调用错误如何解决

报错触发原因

Illuminate\Database\Eloquent\Model 类的update()方法是实例方法,仅支持在已实例化的模型对象上调用,用于更新该对象对应数据库行的内容。你直接通过类名AttributeOption静态调用update(),不符合该方法的调用规则,因此抛出该错误。同时你原代码中给update()传入第二个参数$optionId的写法也不符合该方法的参数要求。

修复方案

根据你的业务需求可以选择以下两种常用修复方式:

  • 方式一:先查询对应模型实例再调用更新(推荐)
    该方式会触发模型的updating/updated等事件,符合Eloquent的常规使用逻辑,适合需要模型事件支持的场景:

    $attributeOption = AttributeOption::findOrFail($optionId);
    $attributeOption->update(array_merge([
        'sort_order' => $sortOrder++,
    ], $optionInputs));
    
  • 方式二:通过查询构造器直接更新
    该方式不需要先查询数据,性能更高,但不会触发模型的更新事件,适合不需要事件回调的场景:

    AttributeOption::where('id', $optionId)->update(array_merge([
        'sort_order' => $sortOrder++,
    ], $optionInputs));
    

内容的提问来源于stack exchange,提问作者user17052553

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 13:54:08