DDC-819: Attempting to search a recursive relationship by null results in an error... #1010

Closed
opened 2026-01-22 12:58:47 +01:00 by admin · 10 comments
Owner

Originally created by @doctrinebot on GitHub (Sep 26, 2010).

Originally assigned to: @beberlei on GitHub.

Jira issue originally created by user omega:

I have an entity which has a many to one relationship pointing to itself. This is ultimately set to map parent/child relationships.

Consider the following snippet:

    // Start out assuming we are searching for "Pages" with no parent specified (root level).
    $parentId = null;

    // Check to see if we're fetching pages that are a child of a parent.
    if(array*key_exists("parent_id", $*GET)) {
        $parentId = $*GET['parent*id'];
    }

    $pages = $this->entityManager->getRepository("MyNamespace\Models\Page")->findByParent($parentId);

When this code is run, PHP tells me:

PHP Fatal error:  Uncaught exception 'Doctrine\\ORM\\ORMException' with message 'You need to pass a parameter to 'findByParent''

At which point, it's obvious that it's expecting a parameter an receiving none. The problem here however is that I have no way of matching for null. Is there some kind of surrogate null php-class that can be created to represent a model-null?

Originally created by @doctrinebot on GitHub (Sep 26, 2010). Originally assigned to: @beberlei on GitHub. Jira issue originally created by user omega: I have an entity which has a many to one relationship pointing to itself. This is ultimately set to map parent/child relationships. Consider the following snippet: ``` // Start out assuming we are searching for "Pages" with no parent specified (root level). $parentId = null; // Check to see if we're fetching pages that are a child of a parent. if(array*key_exists("parent_id", $*GET)) { $parentId = $*GET['parent*id']; } $pages = $this->entityManager->getRepository("MyNamespace\Models\Page")->findByParent($parentId); ``` When this code is run, PHP tells me: ``` PHP Fatal error: Uncaught exception 'Doctrine\\ORM\\ORMException' with message 'You need to pass a parameter to 'findByParent'' ``` At which point, it's obvious that it's expecting a parameter an receiving none. The problem here however is that I have no way of matching for null. Is there some kind of surrogate null php-class that can be created to represent a model-null?
admin added the Bug label 2026-01-22 12:58:47 +01:00
admin closed this issue 2026-01-22 12:58:47 +01:00
Author
Owner

@doctrinebot commented on GitHub (Sep 26, 2010):

@doctrinebot commented on GitHub (Sep 26, 2010): - duplicates [DDC-817: Repository Query by associated ID](http://www.doctrine-project.org/jira/browse/DDC-817)
Author
Owner

@doctrinebot commented on GitHub (Sep 27, 2010):

Comment created by @beberlei:

This is a duplicate of DDC-817, querying by associated ids inside the repositories is currently not possible. You have to use DQL for it.

@doctrinebot commented on GitHub (Sep 27, 2010): Comment created by @beberlei: This is a duplicate of [DDC-817](http://www.doctrine-project.org/jira/browse/DDC-817), querying by associated ids inside the repositories is currently not possible. You have to use DQL for it.
Author
Owner

@doctrinebot commented on GitHub (Sep 27, 2010):

Comment created by omega:

While that is relevant to this issue, the problem I outlined here isn't just to do with being able to query an association by ID. It's about how I want to match for entities that have null specified.

This problem would arise with any regular field. Note: the error that I'm getting "you need to pass a parameter to findByParent". That's a PHP error, not Doctrine2. Which means the method isn't even getting a chance to run.

I understand that currently it won't work once it does run, but there has to be some way to test for null...

@doctrinebot commented on GitHub (Sep 27, 2010): Comment created by omega: While that is relevant to this issue, the problem I outlined here isn't **just** to do with being able to query an association by ID. It's about how I want to match for entities that have null specified. This problem would arise with any regular field. Note: the error that I'm getting "you need to pass a parameter to findByParent". That's a PHP error, not Doctrine2. Which means the method isn't even getting a chance to run. I understand that currently it won't work once it does run, but there has to be some way to test for null...
Author
Owner

@doctrinebot commented on GitHub (Sep 27, 2010):

Comment created by @beberlei:

you are right, there is another bug :)

@doctrinebot commented on GitHub (Sep 27, 2010): Comment created by @beberlei: you are right, there is another bug :)
Author
Owner

@doctrinebot commented on GitHub (Sep 27, 2010):

Comment created by @beberlei:

Fixed!

@doctrinebot commented on GitHub (Sep 27, 2010): Comment created by @beberlei: Fixed!
Author
Owner

@doctrinebot commented on GitHub (Sep 27, 2010):

Comment created by omega:

Unrelated to the fix, split this off if necessary: Looking at the other issue you linked in, it appears as though the column that stores the actual foreign key will be forced into becoming a primary key. Which is not really optimal. Is there any way to do this without creating another primary key on the entity?

@doctrinebot commented on GitHub (Sep 27, 2010): Comment created by omega: Unrelated to the fix, split this off if necessary: Looking at the other issue you linked in, it appears as though the column that stores the actual foreign key will be forced into becoming a primary key. Which is not really optimal. Is there any way to do this without creating another primary key on the entity?
Author
Owner

@doctrinebot commented on GitHub (Sep 27, 2010):

Comment created by @beberlei:

err i just realized that this fix is bullshit.

the query turns into WHERE foo = ''.

There is no conversion into IS NULL. This case can only be solved by DQL.

@doctrinebot commented on GitHub (Sep 27, 2010): Comment created by @beberlei: err i just realized that this fix is bullshit. the query turns into WHERE foo = ''. There is no conversion into IS NULL. This case can only be solved by DQL.
Author
Owner

@doctrinebot commented on GitHub (Sep 27, 2010):

Comment created by @beberlei:

I reverted this patch in the fix for DDC-817

@doctrinebot commented on GitHub (Sep 27, 2010): Comment created by @beberlei: I reverted this patch in the fix for [DDC-817](http://www.doctrine-project.org/jira/browse/DDC-817)
Author
Owner

@doctrinebot commented on GitHub (Sep 27, 2010):

Issue was closed with resolution "Won't Fix"

@doctrinebot commented on GitHub (Sep 27, 2010): Issue was closed with resolution "Won't Fix"
Author
Owner

@doctrinebot commented on GitHub (Sep 27, 2010):

Comment created by @beberlei:

@Alexander: I don't get your foreign key to primary key force question, there is no such requirement.

@doctrinebot commented on GitHub (Sep 27, 2010): Comment created by @beberlei: @Alexander: I don't get your foreign key to primary key force question, there is no such requirement.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: doctrine/archived-orm#1010