gpt4 book ai didi

sql - Doctrine 查询: confusing addWhere, andWhere,orWhere

转载 作者:行者123 更新时间:2023-12-04 21:23:54 25 4
gpt4 key购买 nike

我有一个问题:

$q->andWhere($q->getRootAlias().'.is_published = ?', 1);
$q->andWhere($q->getRootAlias().'.published_at >= ?', time());
$q->leftJoin($q->getRootAlias().'.EventLdapGroup l');
$q->andWhereIn('l.ldap_group_id', $permissions_id );
$q->orWhere('l.ldap_group_id IS NULL);

哪个输出:

FROM 
Event r LEFT JOIN r.EventLdapGroup l
WHERE
r.is_published = ? AND
r.published_at >= ? AND
l.ldap_group_id IN (?, ?) OR
l.ldap_group_id IS NULL

唯一的问题是,如果 ldap_group_id 为 null(最后一个条件),它将删除 is_publishedpublished_at 条件。

我想要类似的东西[值要么在 ldap_group_id 中,要么为空]:

FROM 
Event r LEFT JOIN r.EventLdapGroup l
WHERE
r.is_published = ? AND
r.published_at >= ? AND
(l.ldap_group_id IN (?, ?) OR l.ldap_group_id IS NULL)

我必须说我迷失了复杂的 where 条件。如何实现?

谢谢

最佳答案

而不是你的最后两行

$q->andWhereIn('l.ldap_group_id', $permissions_id );
$q->orWhere('l.ldap_group_id IS NULL);

试试这个方法

$q->andWhere($qb->expr()->orx(
$qb->expr()->in( 'l.ldap_group_id', $permissions_id ),
$qb->expr()->isNull( 'l.ldap_group_id' );

关于sql - Doctrine 查询: confusing addWhere, andWhere,orWhere,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5417521/

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