Doctrine 2 - ORM
  1. Doctrine 2 - ORM
  2. DDC-819

Attempting to search a recursive relationship by null results in an error...

    Details

    • Type: Bug Bug
    • Status: Resolved
    • Priority: Major Major
    • Resolution: Won't Fix
    • Affects Version/s: 2.0-BETA4
    • Fix Version/s: 2.0-RC1
    • Component/s: None
    • Security Level: All
    • Labels:
      None
    • Environment:
      Ubuntu Linux, MySQL

      Description

      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?

        Issue Links

          Activity

          Hide
          Benjamin Eberlei added a comment -

          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.

          Show
          Benjamin Eberlei added a comment - 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.
          Hide
          Alexander Trauzzi added a comment - - edited

          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...

          Show
          Alexander Trauzzi added a comment - - edited 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...
          Hide
          Benjamin Eberlei added a comment -

          you are right, there is another bug

          Show
          Benjamin Eberlei added a comment - you are right, there is another bug
          Hide
          Benjamin Eberlei added a comment -

          Fixed!

          Show
          Benjamin Eberlei added a comment - Fixed!
          Hide
          Alexander Trauzzi added a comment - - edited

          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?

          Show
          Alexander Trauzzi added a comment - - edited 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?
          Hide
          Benjamin Eberlei added a comment -

          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.

          Show
          Benjamin Eberlei added a comment - 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.
          Hide
          Benjamin Eberlei added a comment -

          I reverted this patch in the fix for DDC-817

          Show
          Benjamin Eberlei added a comment - I reverted this patch in the fix for DDC-817
          Hide
          Benjamin Eberlei added a comment -

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

          Show
          Benjamin Eberlei added a comment - @Alexander: I don't get your foreign key to primary key force question, there is no such requirement.

            People

            • Assignee:
              Benjamin Eberlei
              Reporter:
              Alexander Trauzzi
            • Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: