Symfony 索纳塔行政及;KNP主义行为翻译

Symfony 索纳塔行政及;KNP主义行为翻译,symfony,sonata-admin,a2lix-translation,Symfony,Sonata Admin,A2lix Translation,我们已经使用条令行为配置了翻译。但在sonata管理列表视图中,它显示了实体的所有翻译,这些翻译是使用条令行为保存的。但是我们只需要显示当前的语言环境翻译。我在实体中创建了一个函数,并从Transnations表中获得了翻译。而且效果很好 但现在它变成了一个性能问题。在每个记录上,它都会查询translations表并执行一个查询,现在一个视图上大约有3000行要显示,它会使系统崩溃 为了在take translations input的表单中实现它,我配置了一个Lix translation表

我们已经使用条令行为配置了翻译。但在sonata管理列表视图中,它显示了实体的所有翻译,这些翻译是使用条令行为保存的。但是我们只需要显示当前的语言环境翻译。我在实体中创建了一个函数,并从Transnations表中获得了翻译。而且效果很好

但现在它变成了一个性能问题。在每个记录上,它都会查询translations表并执行一个查询,现在一个视图上大约有3000行要显示,它会使系统崩溃

为了在take translations input的表单中实现它,我配置了一个Lix translation表单


有没有办法在sonata Admin中使用当前语言环境显示单个翻译?

您必须将连接放在翻译表中,这将减少查询数据库中每条记录的查询数。然后它将从当前对象中检查

比如:

它将在Sonata Admin中工作。 如果您想在sonata admin之外执行此操作,您可以将连接放入存储库中

public function createQuery($context = 'list') {
    $query = parent::createQuery($context);

    $query->addSelect('tl');
    $query->innerJoin($query->getRootAlias() . ".translations", "tl");

    return $query;
}