注销时出现Laravel错误

时间:2015-04-19 11:32:17

标签: php laravel eloquent laravel-5

我有一个自定义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` = ?')

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

1 个答案:

答案 0 :(得分:1)

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

您可以通过在模型中定义属性来阻止这种情况:

public $test;

或者,如果您想像对象一样使用所述属性,则应将其初始化为:

public $permissions;

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