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

执行Laravel Artisan命令时出现__set_state()方法未定义错误

问题解决:Call to undefined method App\Models\Unidades::__set_state()

执行php artisan config:clear或php artisan route:clear时触发这个错误,本质是PHP反序列化模型实例时缺少__set_state魔术方法。Laravel在缓存配置、路由这类操作时,会序列化相关文件中的内容,如果你的配置文件、路由文件或服务提供者里直接引用了Unidades模型的实例(比如Unidades::first()这种写法),缓存过程中就会尝试反序列化这个模型对象,而默认Eloquent模型没有内置__set_state方法,就会报错。

你已经添加了HasFactory,但这个和__set_state无关,下面是具体解决步骤:

  • 排查并修正模型实例的不当引用:
    检查所有配置文件(config/目录下)、路由文件(routes/下)以及服务提供者(app/Providers/),看看有没有直接返回或使用Unidades模型实例的代码。比如如果在某个配置文件里写了:

    'default_unidade' => Unidades::where('nome', '总部')->first(),
    

    这种写法会把模型对象存入配置缓存,必须改成存储标量值(比如ID),然后在业务代码里通过ID查询模型:

    'default_unidade_id' => 1,
    

    之后在需要用的地方写Unidades::find(config('app.default_unidade_id'))。

  • 临时应急修复(不推荐长期使用):
    如果暂时找不到引用位置,可以给Unidades模型手动添加__set_state方法,让PHP能正常反序列化模型对象:

    <?php
    
    namespace App\Models;
    
    use Illuminate\Database\Eloquent\Factories\HasFactory;
    use Illuminate\Database\Eloquent\Model;
    
    class Unidades extends Model
    {
        use HasFactory;
    
        protected $fillable = [
            'nome',
            'endereco', 
            'telefone',
            'coordenador',
            'diretor_tecnico',
            'responsavel_tecnico_da_enfermagem',
            'responsavel_tecnico_da_farmacia',
            'inicio',
            'termino',
            'imagem',
            'nome_abreviado',
            'arquivos'
        ];
    
        public static function __set_state($data)
        {
            $model = new self();
            foreach ($data as $key => $value) {
                $model->$key = $value;
            }
            return $model;
        }
    }
    
  • 清理残留缓存:
    修复后,执行以下命令彻底清理缓存:

    php artisan cache:clear
    php artisan config:clear
    php artisan route:clear
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 02:56:18