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)
$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()。前者返回查询结果,后者返回查询本身