Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

DDC-116: array_combine error when using combined Primary Key #1761

Closed
doctrinebot opened this issue Nov 5, 2009 · 8 comments
Closed

DDC-116: array_combine error when using combined Primary Key #1761

doctrinebot opened this issue Nov 5, 2009 · 8 comments
Labels
Milestone

Comments

@doctrinebot
Copy link

Jira issue originally created by user nicokaiser:

I use a combined Primary Key for a User's Phonenumber entity (to match our existing DB model). The key is combined from a "Type" field and a "userId" field that references the User table.

To mark the (referenced!) userId field and the type field as PK, I need to add "userId" to the model (adding @id to User does not work). This works well when generating Users and Phonenumbers - but the delete command breaks:

{panel}
PHP Warning: array_combine(): Both parameters should have an equal number of elements in ..../lib/Doctrine/ORM/Persisters/StandardEntityPersister.php on line 274
PHP Catchable fatal error: Argument 2 passed to Doctrine\DBAL\Connection::delete() must be an array, boolean given, called in ..../lib/Doctrine/ORM/Persisters/StandardEntityPersister.php on line 275 and defined in ..../lib/Doctrine/DBAL/Connection.php on line 372
{panel}

Entities:
http://pastebin.com/d51e021e2

Test code:
http://pastebin.com/m51d1f497

@doctrinebot
Copy link
Author

Comment created by nicokaiser:

I attached a patch for Doctrine\Orm\Id\Assigned, there seems to be a runaway line which makes the class add each element twice...

@doctrinebot
Copy link
Author

Comment created by romanb:

Whoops. Thanks for finding this! Does it fix this issue? I will need to add a testcase to the suite.

@doctrinebot
Copy link
Author

Comment created by nicokaiser:

Does not entirely fix it: if the $value is empty, too few elements are added again.
Need to remove the "if (isset($value)) {" clause. I'll attach the fixed Assigned.php.

@doctrinebot
Copy link
Author

Comment created by romanb:

I think the isset() is correct. That way the $identifier array remains empty if the PK is null and later if ( ! $identifier) evaluates to false on the empty array and raises the exception. If we remove the isset() we would "accept" PKs with null values. But it might be better to do:

 if (!isset($value)) {
        throw ORMException::entityMissingAssignedId($entity);
  } else {
         $identifier[] = $value;
 }

@doctrinebot
Copy link
Author

Comment created by romanb:

I will fix this and add some new tests for it.

@doctrinebot
Copy link
Author

Comment created by romanb:

Should be fixed now.

@doctrinebot
Copy link
Author

Issue was closed with resolution "Fixed"

@doctrinebot doctrinebot added this to the 2.0-ALPHA3 milestone Dec 6, 2015
@doctrinebot doctrinebot added the Bug label Dec 7, 2015
@doctrinebot
Copy link
Author

Imported 1 attachments from Jira into https://gist.github.com/b9db7c4a3b7ef6902974

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant