Php 注销时出现Laravel错误

Php 注销时出现Laravel错误,php,laravel,eloquent,laravel-5,Php,Laravel,Eloquent,Laravel 5,我有一个自定义的AppUserProvider,可以从缓存设置中获取我的用户,如下所示: class AppUserProvider extends \Illuminate\Auth\EloquentUserProvider { public function retrieveById($identifier) { return \App\Models\User::getById($identifier); } } 然后,在使用Eloquent检索对象

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

class AppUserProvider extends \Illuminate\Auth\EloquentUserProvider {

    public function retrieveById($identifier)
    {
        return \App\Models\User::getById($identifier);
    }
}
然后,在使用Eloquent检索对象并返回它之后,我在
getById
方法中对其设置一个自定义属性

$user->test = 'test';
一切正常,但当我点击注销时,我得到一个错误

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

不确定它为什么尝试更新
测试
参数。

每次在实际不存在(未在类中定义)的雄辩模型上设置属性时,都会调用
\u set()
,并且Laravel将该值存储为模型属性。然后,在运行更新时,Laravel注意到您添加了一个新属性,并将其添加到更新查询中

只需在模型中定义属性即可防止这种情况:

public $test;
或者,如果要将上述属性用作对象,则应将其初始化为:

public $permissions;

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

test
属性用于什么?当Laravel在模型上运行更新时,它会获取所有(更改的)属性并将它们放入查询中。实际上,我正在存储从键/值到参数的权限,以便于访问,如
Auth::user()->权限->保存文件
。也许有更好的方法来处理这个问题。