Symfony 如何从DoctrineExtensions组合可翻译和可插入?

Symfony 如何从DoctrineExtensions组合可翻译和可插入?,symfony,doctrine-orm,Symfony,Doctrine Orm,我已在国家实体的特定字段上安装并使用了可翻译和可插入两种功能: ... class Country { ... /** * @Gedmo\Translatable * @Gedmo\Slug(fields={"name"}) * @ORM\Column(length=255, nullable=false) */ private $slug; 对于英语用户,页面的URL应为…/country/france;对于德语用户,页面的UR

我已在国家实体的特定字段上安装并使用了可翻译和可插入两种功能:

...
class Country
{
    ...
    /**
     * @Gedmo\Translatable
     * @Gedmo\Slug(fields={"name"})
     * @ORM\Column(length=255, nullable=false)
     */
    private $slug;
对于英语用户,页面的URL应为…/country/france;对于德语用户,页面的URL应为…/land/frankreich

在控制器中,我获取特定语言的slug,并通过此特定于语言环境的slug进行过滤,我希望检索国家实体

我在这里或文档中没有找到任何关于如何做到这一点的信息

谢谢你给我任何关于如何解决这个问题的提示

刚刚找到了。解决方案是使用TranslationWalker的ORM查询提示自动加入翻译表,因此您可以按任何翻译字段排序或筛选。这太棒了

代码如下所示:

...
->createQuery('SELECT...FROM MyFooBundle:Country c WHERE c.slug = :slug...)
->setParameter('slug', $slug)
->setHint(
    \Doctrine\ORM\Query::HINT_CUSTOM_OUTPUT_WALKER,
    'Gedmo\\Translatable\\Query\\TreeWalker\\TranslationWalker'
)
->getSingleResult();
顺便说一句:如果您想使用回退(即,如果没有特定的翻译可用,则使用默认字符串/文本),然后通过setTranslationFallback方法调用(在doctrine_extensions.yml中)为您的gedmo.listener.translateable服务配置它