关于关联模型的一个问题
大家好,又遇到问题了,求助大家。
有如下三张表:
user_roles
role_id
user_id
roles
id
name
users
id
real_name
现在想要查询出所有的users,对应的role_name,应该用哪一种关联模型呢?
users 与 user_roles 是一对一, roles 与 user_roles 也是一对一。按理 roles 与 users 也应该是一对一关系。但是他们的一对一关系,又是建立在 userhasrole 上面的。试过 hasOneThrough ,解决不了问题。。。
请教各位,这种情况应该怎么处理呢?
以上问题已解决了。就是用hasOneThrough,还是看文档不仔细啊,这个方法有提供六个参数,一直只用了前五个,导致查询语句出错,user_roles.id=roles.id。加上第六个参数,瞬间好使了。看了手册,第六个参数表示中间模型的本地键名,如果不加默认是 id。
附上代码:
public function byRole()
{
return $this->hasOneThrough('App\Models\Role', 'App\Models\UserRole', 'model_id', 'id', 'id', 'role_id');
}
推荐文章: