Get translatable entity from repository with specific locale

I wanted to have translatable entities in my project. So I used Gedmo translatable through the doctrine extensions bundle for Symfony. When using any kind of entity repository, a listener automatically pulls the right translation according to the current locale (from request or the default one). This is a really good default as most time you will need exactly that behavior.

But now I had the requirement to get all active entities with a specific locale (not the current one). To do this you have to specifically set the locale for the query.

I adapted it within my repository class:

 * Find all active products
 * @param string $locale Locale
 * @return array
public function findAllActiveWithLocale($locale)  
    $queryBuilder = $this->createQueryBuilder("p");

        ->where(" = :active")
        ->setParameter('active', true)

    $query = $queryBuilder->getQuery();


    $query->setHint(TranslatableListener::HINT_TRANSLATABLE_LOCALE, $locale);

    return $query->getResult();
comments powered by Disqus