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

Laravel 5.5报错:Call to undefined method stdClass::update() 问题求助

解决Laravel 5.5中Call to undefined method stdClass::update()错误

嘿,这个问题我之前帮好几个开发者排查过,咱们快速理清楚问题根源和解决办法:

错误原因

你当前的代码里,DB::table('adminUserLogs')->...->first()返回的是一个普通的PHP stdClass对象,而不是Laravel Eloquent模型实例。只有Eloquent模型才自带update()方法,普通对象自然没有这个方法,所以才会抛出这个错误。

两种可行的解决方案

方案1:直接用查询构造器完成更新(最简洁高效)

不用先获取对象再调用更新,直接在查询构造器链上执行update()即可,这也是Laravel查询构造器推荐的写法:

DB::table('adminUserLogs')
    ->where('adminUserId', $id)
    ->whereNull('adminUserOutTime') // Laravel提供的语法糖,比写NULL更规范
    ->update(['adminUserOutTime' => \Carbon\Carbon::now()]);

方案2:使用Eloquent模型操作(适合需要复用模型逻辑的场景)

如果你项目里习惯用Eloquent模型,首先要创建对应的模型类:

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class AdminUserLog extends Model
{
    // 如果表名和模型复数命名不一致,需要手动指定
    protected $table = 'adminUserLogs';
    // 允许批量赋值的字段,确保update()能正常生效
    protected $fillable = ['adminUserOutTime'];
}

然后用模型查询并更新(记得处理first()可能返回null的情况,避免空指针错误):

$logEntry = App\Models\AdminUserLog::where('adminUserId', $id)
    ->whereNull('adminUserOutTime')
    ->first();

if ($logEntry) {
    $logEntry->update(['adminUserOutTime' => \Carbon\Carbon::now()]);
}

小提示

如果只是简单的单条更新操作,优先选方案1,因为它不需要额外创建模型,而且直接在数据库层面执行更新,性能更优。

内容的提问来源于stack exchange,提问作者Niladri Banerjee - Uttarpara

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:03:22