Sonata Admin& KNP主义行为翻译

时间:2014-11-13 06:34:44

标签: symfony sonata-admin a2lix-translation

我们使用Doctrine Behaviors配置了翻译。但是在奏鸣曲管理列表视图中,它显示了使用Doctrine行为保存的实体的所有翻译。但我们只需要显示当前的语言环境翻译。我在实体中创建了一个函数,并从跨国表中获得了翻译。它工作得很好。

但现在它成了性能问题。与每条记录一样,它会查询翻译表并执行查询,现在大约有3000行要显示在视图上并且会折叠系统。

要在表单中实现它以获取翻译输入我已配置a2lix翻译表单。

有没有办法在奏鸣曲管理员中使用当前区域设置显示单个翻译?

1 个答案:

答案 0 :(得分:2)

您必须将联接放在转换表中,这将减少每个记录查询数据库的查询数。然后它将检查当前对象。

像:

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

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

    return $query;
}

它将在Sonata Admin中运行。 如果您想要除sonata管理员之外的其他操作,您可以将连接放入存储库。