0

我有一个用户表、角色和 users_roles 作为连接/数据透视表。我正在尝试创建一个查询来检索所有没有这些角色的用户:干预者、编辑、主管

目前这是我的查询,但我没有得到想要的结果,因为具有这些角色的用户仍然会来。

  $users = TableRegistry::getTableLocator()->get('Users');
            $allUsers = $users->find('all', ['order' => ['Users.id ASC']])->select([
                'id',
                'name',
                'surname',

            ])
                 
            ->contain('Roles', function (Query $q) {
                return $q
                    ->select(['slug'])
                    ->notMatching('Users.Roles', function ($q) {
                        return $q->where(['Roles.slug NOT IN' => ['interventor', 'editor', 'chief']]);
                    });      
            });

谢谢

4

1 回答 1

0

好的,我找到了解决方案。

只需在查询中添加一个 innerJoin。

->innerJoinWith('Roles')->where(['Roles.slug NOT IN' => ['interventor', 'editor', 'chief']]);
于 2021-10-29T14:16:28.163 回答