我将要访问我的第3张表格。 我的桌子设计已在下面:
第一张表:用户
第二张表:User_Role
第3张表:角色
我的用户模型类代码是:
<?php
namespace App;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
use Notifiable;
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name', 'email', 'password',
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
public function user_role()
{
return $this->belongsToMany(UserRole::class)->withTimestamps();
}
}
我的User_Role模型类是:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class UserRole extends Model
{
public function roles()
{
return $this->belongsToMany(Role::class)->withTimestamps();
}
}
现在我怎样才能访问我的第二个tbl,例如:
$user = User::find(Auth::id());
return $user->user_role->first()->id;
如何访问我的 3rd tbl?
来自角色表的标题
是我的表的关系正确吗?
答案 0 :(得分:1)
在您的用户模型中,您应该定义它与Role的关系,而不是user_role。
在您的用户模型中:
public function roles()
{
return $this->belongsToMany(Role::class, 'user_role');
}
然后在角色模型中:
public function users()
{
return $this->belongsToMany(User::class, 'user_role');
}
Laravel将假设n:m关系的数据透视表为“user_role”。所以你不需要指定表名,尽管你可以(如上所示)。
要获得第一个用户角色,您只需:
$user = Auth::user();
$user->roles->first();