Knplabs 可翻译:如何通过可翻译字段查找条目?

use*_*540 0 localization symfony doctrine-orm

我有一个具有 Knp Doctrine 行为可翻译和可拖拽的实体。一切工作正常,因此当我创建或更新条目时,标题生成的每种语言都会有一个别名。

问题是我如何找到翻译后的条目?

这将引发错误“没有字段‘slug’”:

$this->getDoctrine()->getRepository('AcmeTestBundle:News')->findOneBySlug($slug);
Run Code Online (Sandbox Code Playgroud)

fra*_*rak 5

除非有人有更聪明的方法来执行此操作,否则您将需要创建一个自定义存储库方法来执行与实体翻译表的联接以执行查找:

use Doctrine\ORM\EntityRepository;

/**
 * NewsRepository
 */
class NewsRepository extends EntityRepository
{
    public function findOneBySlug($slug)
    {
        $qb = $this->createQueryBuilder('n')
            ->select('n, t')
            ->join('n.translations', 't')
            ->where('t.slug = :slug')
            ->setParameter('slug', $slug);

        return $qb->getQuery()->getSingleResult();
    }
}
Run Code Online (Sandbox Code Playgroud)

我发现这种方法有效,尽管我仍然很好奇是否有更通用的解决方案


归档时间:

查看次数:

2725 次

最近记录:

12 年,3 月 前