Laravel 为用户类变量赋值

Laravel 为用户类变量赋值,laravel,Laravel,在登录过程中,我尝试向我的用户类模型添加一个变量,我不想将其存储在数据库中。因此,我对User.php进行了如下扩展: private $roles; protected $appends = ['roles']; public function getRolesAttribute() { //dd($this->roles); return $this->roles; } public function setRolesAttribute($value) {

在登录过程中,我尝试向我的用户类模型添加一个变量,我不想将其存储在数据库中。因此,我对User.php进行了如下扩展:

private $roles;
protected $appends = ['roles'];

public function getRolesAttribute()
{
    //dd($this->roles);
    return $this->roles;
}

public function setRolesAttribute($value)
{
    $this->roles = ($value);
}
Im我的登录类我尝试分配以下信息: $user->roles=$ldap\u roles

但不幸的是,数据没有保存,当我在刀片服务器中调用Auther::User()时,角色值为null,或者最好说从未设置。我想问题在于用户从未真正保存过,但正如我前面所说的,我不想将ldap_角色信息存储在数据库中

有什么建议吗

谢谢 斯蒂芬


嗨, 因此,我用新列roles更新了我的表,并将LDAP组存储在那里。每次登录后,我分配角色并进行更新。我对这个解决方案不是很满意,但我找不到其他方法

        $user->roles = json_encode($ldap_roles);
        $user->update();

六羟甲基三聚氰胺六甲醚。。。你能给我们一点关于你为什么不想保存数据的详细信息吗,这可能会对你的答案有用。是在两次通话之间吗?我能想到的唯一一件事就是使用某种类型的用户单例,您可以在其中设置一个属性,并确保在再次尝试获取该用户时,您添加了该角色的一个实例。嘿,我不想存储此信息的原因是因为我正在使用LDAP身份验证,并且在登录过程中需要检查用户是哪个组的成员。这当然会改变,我不想在数据库中维护它。因此,在登录过程中,我正在抓取LDAP组,并希望稍后将它们用于角色权限。我希望这能更好地解释这一点$group=Adldap::search()->groups()->findorfail($ldap\u group);如果要跨请求保存数据,而不将其存储在数据库中,则必须将其存储在中。谢谢。这也行得通。唯一的问题是,我必须使用Session::put和get,而不仅仅是使用“Session(['ldap\u roles'=>json\u encode($ldap\u roles)]);”。这意味着我还必须将“使用会话”添加到我正在使用的每个类中。