【问题标题】:How can I get those basic Eloquent Relationships to work?我怎样才能让那些基本的雄辩关系发挥作用?
【发布时间】:2021-09-02 01:23:24
【问题描述】:

所以我有一个表 users,其中每个用户都有一个 role_id,然后我有一个角色表,其中有 role_id 和角色的名称。我面临的问题是用户模型。在迁移时,我正确地创建了外键,但在模型上,当我尝试时,例如显示用户的角色,我不应该这样做吗?

public function roles()
    {
        return $this->belongsToMany(Role::class);
    }

每当我在 artisan tinker 上找到一个用户并尝试使用它不返回任何内容的方法查看他的角色时。我刚刚得到这个(在这种情况下,用户我试图查看它具有管理员角色的角色,即 id 为 1 的角色):

Illuminate\Database\Eloquent\Relations\BelongsToMany {#3351
     +withTimestamps: false,
   }

我不应该得到角色名称吗?

【问题讨论】:

  • 用户只有一个角色?
  • 嗯,那我觉得应该把belongsToMany改成belongsTo对吧?

标签: php laravel eloquent relationship


【解决方案1】:

要获取用户角色,您需要这样的代码

$user = User::find($id);
$roles = $user->roles()->get(); 
// or $roles = $user->roles with lazy loading

其他解决方案是

$user = User::with('roles')->find($id);
$roles = $user->roles

编辑

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

获取具有角色的用户

$user = User::with('role')->find($id);
$role = $user->role

【讨论】:

  • 但这不可能是角色()方法。此外,如果我在工匠修补匠上尝试它,它会给我这个:=> Illuminate\Database\Eloquent\Collection {#4237 all: [], }
猜你喜欢
  • 2017-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-07
  • 2015-09-14
  • 1970-01-01
  • 2020-04-25
相关资源
最近更新 更多