Skip to content

Loading…

DDC-2780: IS [NOT] NULL conditions with JOINs #3528

Open
doctrinebot opened this Issue · 6 comments

2 participants

@doctrinebot

Jira issue originally created by user maryo:

<?php
When trying to apply a [NOT] NULL condition on LEFT JOINed association. It ends with an error.

"Cannot add having condition on a non result variable."

$queryBuilder
->leftJoin('r.players', 'players', 'WITH', 'players = :player')
->where('players IS NULL');

It was working 3 month ago. But then, this commit broke it.

d9c1782

Or in other words if this is not a bug. How to test if the collection does not contain let's say a user with ID 5 (AND XX OR YY) with DQL/queryBuilder API? IN SQL I would just simply LEFT JOIN it with ON condition and then i would test it for existence using IS NULL in WHERE condition. How to do this using DQL when the pasted example ends with an error?

@doctrinebot

Comment created by maryo:

OK. players.id IS NULL (but it's uglier)

@doctrinebot

Comment created by Soullivaneuh:

r.players IS NULL works too.

But I don't understand why this will be not fixed. I agree, it's uglier.

@doctrinebot

Comment created by maryo:

I am checking the activity and it looks It was me who changed it to "Won't fix". If it's true then it was an accident. Sorry if I'm wrong.

@doctrinebot

Comment created by pejot:

Hi,

also experiencing this error. Worked fine with 2.4.7, now trying to migrate to 2.5.0 and getting this error. The problem is, even when I do select the variable to SELECT, still getting the error.

@doctrinebot

Comment created by mrthehud:

I'm seeing this too - but I actually think the "players.id IS NULL" is right - otherwise what you're really asking for is something like "COUNT(r.players) == 0" - which might cause problems when you combine the query with pagination (for instance, using the KNP Paginator in Symfony).

@doctrinebot

Comment created by benjamin:

Still no updates on this bug, two years after? I'm surprised that a potential bug introduced by a commit is left without any comment from the core team for so long.

@beberlei beberlei was assigned by doctrinebot
@doctrinebot doctrinebot added the Bug label
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.