Laravel BelongsToMany 方法不返回任何内容

thi*_*ami 1 mysql orm pivot-table laravel eloquent

我正在 Laravel 中实现多对多关系。实体是: users roles 和数据透视表user_role

Users
====
id
name
.....

roles
====
id
role
...

   user_role
   ======
   userId
   roleId
Run Code Online (Sandbox Code Playgroud)

尝试了各种方法来获得rolesauser但到目前为止还没有运气。有任何想法吗?

最后一次尝试是:

/**
     * @return \Illuminate\Database\Eloquent\Relations\BelongsToMany
     */
    public function roles()
    {
        return $this->belongsToMany(Role::class, 'user_role', 'userId', 'roleId');
    }
Run Code Online (Sandbox Code Playgroud)

Laravel Tinker 上的当前输出:

>>> $user->roles()
=> Illuminate\Database\Eloquent\Relations\BelongsToMany {#2380
     +withTimestamps: false,
Run Code Online (Sandbox Code Playgroud)

gba*_*zzi 5

$user->roles()只是对关系的查询,并没有执行

您可以使用

$user->roles
Run Code Online (Sandbox Code Playgroud)

如果您不需要添加额外的条件或

$user->roles()->where(your conditions)->get()
Run Code Online (Sandbox Code Playgroud)

用于更复杂的关系查询。

主要区别在于 pharentesis 的用法:->rolesvs ->roles()。前者返回查询结果,后者返回查询本身