首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Laravel和MySQL处理与三个或更多类的多到多关系

问如何使用Laravel和MySQL处理与三个或更多类的多到多关系
EN

Stack Overflow用户
提问于 2019-09-24 10:35:57
回答 1查看 51关注 0票数 0

我正在与Laravel和雄辩/MySQL一起做一个项目。

我想知道如何处理与三个表(用户、商人、角色)之间的多对多关系。

  • 任何用户都可以有一个或多个商家。
  • 任何商家都可以在用户之间共享。
  • 任何用户都有特定的商家角色。

有什么最佳做法可以遵循吗?

我怎样才能让所有的商家都有一个特定的角色呢?

谢谢你的帮助

这是我目前的结构:

代码语言:javascript
复制
Users
-------------------------------
| id | first_name | last_name |
-------------------------------
代码语言:javascript
复制
Merchants
-------------------
| id | trade_name |
-------------------
代码语言:javascript
复制
Roles
-------------------------
| id | name | hierarchy |
-------------------------
代码语言:javascript
复制
merchant_user_role
-----------------------------------
| merchant_id | user_id | role_id |
-----------------------------------

商人模型

代码语言:javascript
复制
<?php
class Merchant extends Model
{
    public function users()
    {
        return $this->belongsToMany('App\User', 'merchant_user_role')
            ->withPivot('role_id')
            ->withTimestamps()
            ->orderBy('first_name', 'asc');
    }
}

用户模型

代码语言:javascript
复制
<?php

class User extends Model
{
    public function merchants()
    {
        return $this->belongsToMany('App\Merchant', 'merchant_user_role')
            ->withPivot('role_id')
            ->withTimestamps()
            ->orderBy('trade_name', 'asc');
    }

    public function roles()
    {
        return $this->belongsToMany('App\Role', 'merchant_user_role')
            ->withTimestamps();
    }
}

角色模型

代码语言:javascript
复制
<?php

class Role extends Model
{
    public function users()
    {
        return $this->belongsToMany('App\User')->withTimestamps();
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-24 11:17:37

代码语言:javascript
复制
$merchants = $user->merchants()->where('role_id', $some_role_id)->get();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58078364

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档