Laravel 注销时出错

Laravel error on logout

我有一个自定义 AppUserProvider 从缓存设置中获取我的用户,如下所示:

class AppUserProvider extends \Illuminate\Auth\EloquentUserProvider {

    public function retrieveById($identifier)
    {
        return \App\Models\User::getById($identifier);
    }
}

然后,在使用 Eloquent 和 return 检索对象后,我在 getById 方法中对其设置了自定义 属性。

$user->test = 'test';

一切正常,但当我点击注销时出现错误。

update `users` set `test` = ?, `remember_token` = ?, `updated_at` = ? where `id` = ?')

不确定为什么要尝试更新 test 参数。

每次当您在 Eloquent 模型上设置 属性 实际上并不存在(未在 class 中定义)时 __set() 被调用并且 Laravel 将值存储为模型属性。然后当 运行 更新时,Laravel 注意到您添加了一个新属性并将其添加到更新查询中。

您只需在模型中定义 属性 即可避免这种情况:

public $test;

或者如果你想像对象一样使用 said 属性,你应该将它初始化为一个:

public $permissions;

public function __construct(array $attributes = array()){
    $this->permissions = new stdClass;
    parent::__construct($attributes);
}