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);
}
我有一个自定义 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);
}