如何使用Auth :: user() - > id从其他表中获取数据

时间:2017-09-20 10:29:44

标签: laravel laravel-5.3

我有两张表:RoleUser

用户

id
name
email
password
Roleid

作用

id 
name

我想要获取当前登录Role的{​​{1}}名称。像User

这样的东西

4 个答案:

答案 0 :(得分:3)

基于您定义角色和用户表之间的正确关系,您应该执行以下操作:

$user = auth()->user();
$role = $user->role->name // Name of relation function in user model and gather all role data

如果你没有在用户和角色之间定义正确的关系,你必须做这样的事情:

users表中的

定义了一个名为:role_id

的列

并在用户模型中执行:

public function role() {
        return $this->belongsTo(Role::class, 'role_id');
    }

并在角色模型中:

public function users() {
            return $this->HasMany(User::class);
        }

答案 1 :(得分:0)

这是用户模型

/**
 * The attributes that are mass assignable.
 *
 * @var array
 */
protected $fillable = [
    'username','name', 'email', 'password','loc_id','role_id','status'
];

/**
 * The attributes that should be hidden for arrays.
 *
 * @var array
 */
protected $hidden = [
    'password', 'remember_token',
];

public function role() {
    return $this->belongsTo('App\role', 'role_id');
}

}

这是榜样

protected $table="role";
protected $fillable=['rolename',];

public function user() {
        return $this->HasMany('App\User');
    }

这两个表有一对多的关系。每个用户都有一个roleid,使用此角色id希望通过使用roleid(forgein key)从角色表中获取当前登录用户角色名的名称 {{验证::用户() - >作用() - >角色名}} 我使用它来获取角色名称,但收到错误。

未定义属性:Illuminate \ Database \ Eloquent \ Relations \ BelongsTo :: $ rolename

答案 2 :(得分:0)

如果您只想使用此用户ID,请使用此方式。

$user_id = Auth::id();

否则需要特殊价值,

$user_email = Auth::user()->email;

答案 3 :(得分:0)

请这样写:

{{Auth::user()->role->rolename}}

不要添加()角色