php - Laravel 多对多关系 - 检索模型

标签 php mysql laravel relationship

如果我们有这样的事情:

用户

  • 编号
  • 姓名

作用

  • 编号
  • 姓名

购物

  • 编号
  • 姓名

角色用户

  • 角色编号
  • 用户编号

商店用户

  • 店铺编号
  • 用户编号

快速:商店---商店用户---用户---角色用户---角色

我们希望 SHOP 1 的所有 USER 都具有 ROLE admin。我们怎样才能做到这一点?

所有来自 SHOP 1 的用户:

$shop = Shop::find( $shopId );
$shop->users()->get();

像这样的东西会很好:

$shop = Shop::find( $shopId );
$shop->users()->roles->()->where( 'name', 'Admin' )->get();

最佳答案

假设您的人际关系按预期运作,这应该会让您得到想要的结果:

$shop = Shop::with(['users' => function ($q) {
    $q->whereHas('roles', function ($q) {
        $q->where('name', 'Admin');
    });
}])->find($shopId);

它将选择 id = $shopId 的商店,并将所有 users 附加到它,具有 role where roles .name = Admin

你得到这样的用户 $users = $shop->users

关于php - Laravel 多对多关系 - 检索模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41570093/

相关文章:

php - fatal error : Call to a member function query() on a non-object in . php 文件

php - Doctrine :在使用两种自定义映射类型后,总是告诉我数据库不同步

mysql - sql 只返回每个 id 的最大日期

javascript - 如何通过ajax fetch API响应将从laravel Controller 接收到的数据发送到另一个页面

php - Shopware 6 中嵌套 LineItem 的用例是什么?

php - 如何将使用 mysql_ 函数的脚本转换为使用 mysqli_ 函数?

php - Laravel 通过表名获取模型

php - Laravel 没有提交我的第二笔交易

具有正则表达式功能的 php mysql

MySQL GROUP_CONCAT DISTINCT 排序异常