如何从laravel中的第一个表访问第三个表

时间:2017-02-25 23:05:43

标签: php mysql sql-server laravel

我将要访问我的第3张表格。  我的桌子设计已在下面:

第一张表:用户

  • id (PK)
  • 名称
  • 电子邮件
  • 密码

第二张表:User_Role

  • id (PK)
  • user_id (国外)
  • role_id (外国)

第3张表:角色

  • id (PK)
  • 权威
  • 标题

我的用户模型类代码是:

<?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?

来自角色表

标题

是我的表的关系正确吗?

1 个答案:

答案 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();