У меня есть запрос:
$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
равно нулю (последнее условие), оно удалит условия is_published
и published_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)
И я должен сказать, что я потерян с комплексом, где состояние.
Как этого добиться?
Спасибо