关于关联模型的一个问题

大家好,又遇到问题了,求助大家。
有如下三张表:

        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');
    }
longren610
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
Epona
最佳答案

正常应该是多对多关系吧

4年前 评论
longren610 (楼主) 4年前
讨论数量: 3
Epona

正常应该是多对多关系吧

4年前 评论
longren610 (楼主) 4年前

去看下多对多关系能不能解决你的问题,文档

4年前 评论
longren610 (楼主) 4年前

用户和角色是多对多关系

4年前 评论
longren610 (楼主) 4年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!