phpcr-odm
phpcr-odm copied to clipboard
Demonstrate expected behaviour for QueryBuilder::setLocale
Failing test for issue #605
I would expect setLocale on the QueryBuilder would return the found document in the specified locale
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.
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
or temporarily setting the locale on the locale chooser right before executing the query, then restoring the previous once the query is executed.
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
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.
Opened issue https://github.com/doctrine/phpcr-odm/issues/623 to discuss how to handle this