DDC-2838: Leaky abstraction when applying Criteria to hydrated/non-hydrated PersistentCollection #3591

Open
doctrinebot opened this Issue Dec 3, 2013 · 7 comments

2 participants

@doctrinebot

Jira issue originally created by user ptlis:

When applying a Criteria to a PersistentCollection that has been hydrated the field names must be camel case, if the collection has not yet been hydrated the field names must be underscore separated.

The github repo linked here contains a simplified testcase for the matrix of hydrated/non-hydrated entities and camel case/underscore separated fields.

https://github.com/ptlis/DoctrineTestcase

@doctrinebot

Comment created by @ocramius:

We can't check out an entire project just to test a bug.

Please write an actual functional test case that can be integrated into the Doctrine ORM test suite.

@doctrinebot

Comment created by ptlis:

Hi,

i'm happy to do so - i'll take a look at this over the weekend.

@doctrinebot

Comment created by derula:

[~ptlis]: Any progress on this? This is currently an issue for us as well and hope to get fixed. I could look into converting it to a test for integration with the test suite if you don't have the time... but it might take a while since I have no experience with the requirements that should be met. (Plus, I am not sure how tightly coupled it is with your project)

@doctrinebot

Comment created by derula:

Hi [ocramius], [ptlis],

I attached a functional Test that integrates with the test suite. Please let me know if I should issue a PR, and I'll do that this evening.

@doctrinebot

Comment created by floeh:

+1

@doctrinebot

Comment created by derula:

My idea to solve this would go like this:

  • Add a new class ObjectCollection in Common that implements Collection and Selectable, but requires class metadata.
  • Whenever creating an ArrayCollection with entities / other objects, create an ObjectCollection instead.

The only thing that's causing me a headache is that ideally, there should be code sharing in some form between the matching() implementations of ObjectCollection and PersistentCollection, because both will use class metadata. Maybe this can be achieved somehow using a trait?

If you like the idea, I could look into it further.

@Ocramius Ocramius was assigned by doctrinebot Dec 6, 2015
@doctrinebot doctrinebot added the Bug label Dec 7, 2015
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment