- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 Symfony2 中,用户和角色之间存在多对多关系。我正在尝试获取未链接到 ROLE_SUPER_ADMIN
的所有用户的列表。角色。
在迁移到 Symfony2/Doctrine 之前,我通过简单的 NOT IN
实现了这一目标。 sql查询,但我一生都无法用 Doctrine 达到同样的效果。
这是我正在尝试的:
$em = $this->getDoctrine()->getManager();
$qb = $em->createQueryBuilder();
$qb2 = $qb;
$dql = $qb->select('sa.id')
->from('AcmeAdminBundle:User', 'sa')
->leftJoin('sa.roles', 'r')
->andWhere('r.role = :role')
->getDQL();
$result = $qb2->select('u')
->from('AcmeAdminBundle:User', 'u')
->where($qb2->expr()->notIn('u.id', $dql))
->setParameter('role', 'ROLE_SUPER_ADMIN')
$users = $result->getQuery()->getResult();
但是这是错误:
[Semantical Error] line 0, col 140 near 'sa LEFT JOIN':
Error: 'sa' is already defined.
这是输出:
SELECT u
FROM AcmeAdminBundle:User sa
LEFT JOIN sa.roles r, AcmeAdminBundle:User u
WHERE u.id NOT IN (
SELECT sa.id
FROM AcmeAdminBundle:User sa
LEFT JOIN sa.roles r
WHERE r.role = :role
)
不知道为什么它会这样输出,因为它不应该执行 LEFT JOIN
两次,我怀疑它与拥有两个 QueryBuilder 实例有关,但也可能完全是其他原因。
最佳答案
您需要MEMBER OF
或在您的情况下NOT MEMBER OF
选项。
$qb->select('sa.id')
->from('AcmeAdminBundle:User', 'sa')
->where(":Role NOT MEMBER OF sa.roles")
->setParameter("Role", <<ROLE_ID_OR_ROLE_ENTITY>>);
我没有测试这段代码,但它应该会给你一些想法。
关于php - Doctrine查询 "where notIn"子查询问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19317921/
在 Symfony2 中,用户和角色之间存在多对多关系。我正在尝试获取未链接到 ROLE_SUPER_ADMIN 的所有用户的列表。角色。 在迁移到 Symfony2/Doctrine 之前,我通过简
我想选择不在特定服务中的成员。我有 3 张 table : 成员 服务 membre_service(membre与service的关系) 我正在使用学说 2,在 SQL 中我的查询是: SELECT
我最近开始创建一个包含 GUI 的 powershell 脚本。 为了防止 GUI 卡住,我创建了一个后台作业,其中运行我的函数“xyz”... 我想捕获特定的窗口标题。如果此窗口关闭,则应触发 if
在 Symfony2 中,用户和角色之间存在多对多关系。我正在尝试获取未链接到 ROLE_SUPER_ADMIN 角色的所有用户的列表。 在迁移到 Symfony2/Doctrine 之前,我已经通过
是否有 NotIn LINQ 方法? // A: 1,2,3,4,5 // B: 4,5,6,7,8 C = A.NotIn(B); // C: 1,2,3 最佳答案 IEnumerable.Exce
我在我的数据库中存储了一个字符串数组(数据库列类型是 JSON)。有一种形式允许用户向这个数组添加一个值。我想确保这个数组中没有重复项。 notIn验证规则似乎是防止重复的最简单解决方案,但它区分大小
你好,我有一个 mysql 查询,它在 sequelize.query 中工作正常,查询是 select list_name from lists l where l.list_id not in (
我有以下 Subsonic 3.0 查询,其中包含一个嵌套的 NotIn 查询: public List GetRandomOrdersForNoReason(int shopId, int type
我希望 Sequelize 将 ID 不在数组中的所有值返回给我。 如果 $notIn 的值是一个空数组,Sequelize 不会返回任何内容,但如果数组包含一个空值,它会返回我。 这不会给我任何返回
我是一名优秀的程序员,十分优秀!