phpcr-odm icon indicating copy to clipboard operation
phpcr-odm copied to clipboard

Demonstrate expected behaviour for QueryBuilder::setLocale

Open uwej711 opened this issue 9 years ago • 6 comments

Failing test for issue #605

I would expect setLocale on the QueryBuilder would return the found document in the specified locale

uwej711 avatar Mar 06 '15 22:03 uwej711

I will try and have a look at this tomorrow. This is surely meant to work but couldn't find any existing tests, very odd.

dantleech avatar Mar 07 '15 17:03 dantleech

Maybe adding a doLoadTranslation here would be a way to do it: https://github.com/doctrine/phpcr-odm/blob/master/lib/Doctrine/ODM/PHPCR/Query/Query.php#L183

uwej711 avatar Mar 08 '15 08:03 uwej711

or temporarily setting the locale on the locale chooser right before executing the query, then restoring the previous once the query is executed.

dbu avatar Mar 09 '15 07:03 dbu

It seems that it would be ideal to add a $locale argument to the loadDocumentsByPhpcrQuery, but that cascades then to findMany() (which can then pass the locale hint to the unit of work getOrCreateDocuments method).

But by this logic we should add the $locale argument to all of the document manager methods (including persist). If that is a good idea or not, I don't know, but I guess its out of the scope here.

Another option would be to add translation aware methods, e.g. getTranslatedDocumentsByPhpcrQuery, findManyTranslated.

But I vote for @dbu s suggestion for now.. and we could create an issue to solve this in 2.0

dantleech avatar Mar 14 '15 09:03 dantleech

the only other option i see would be to remove the possiblility to specify the locale in the query builder. that would be more consistent with the rest. then we would say whatever you do, you need yourself to set the default locale if you want to change something about what the default locale is.

i think we can say that changing the default locale for a single call is out of scope of phpcr-odm, and you just need to change the default if you need this.

or we could offer some sort of wrapper-system where you can say $dm->defaultLocale('de')->find... defaultLocale() would return a dm decorator that changes the locale on the fly and changes it back.

dbu avatar Mar 14 '15 16:03 dbu

Opened issue https://github.com/doctrine/phpcr-odm/issues/623 to discuss how to handle this

dantleech avatar Mar 29 '15 07:03 dantleech