gpt4 book ai didi

mysql - 如何使用 Laravel 和 MySQL 处理三个或更多类的多对多关系

转载 作者:行者123 更新时间:2023-11-29 15:37:38 32 4
gpt4 key购买 nike

我正在使用 Laravel 和 Eloquent/MySQL 开发一个项目。

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

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

有可以遵循的最佳实践吗?

如何获取具有特定角色的用户的所有商家?

感谢您的帮助

这是我当前的结构:

Users
-------------------------------
| id | first_name | last_name |
-------------------------------
Merchants
-------------------
| id | trade_name |
-------------------
Roles
-------------------------
| id | name | hierarchy |
-------------------------
merchant_user_role
-----------------------------------
| merchant_id | user_id | role_id |
-----------------------------------

商家模型

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

用户模型

<?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();
}
}

榜样

<?php

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

最佳答案

$merchants = $user->merchants()->where('role_id', $some_role_id)->get();

关于mysql - 如何使用 Laravel 和 MySQL 处理三个或更多类的多对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58078364/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com