我们使用Doctrine Behaviors配置了翻译。但是在奏鸣曲管理列表视图中,它显示了使用Doctrine行为保存的实体的所有翻译。但我们只需要显示当前的语言环境翻译。我在实体中创建了一个函数,并从跨国表中获得了翻译。它工作得很好。
但现在它成了性能问题。与每条记录一样,它会查询翻译表并执行查询,现在大约有3000行要显示在视图上并且会折叠系统。
要在表单中实现它以获取翻译输入我已配置a2lix翻译表单。
有没有办法在奏鸣曲管理员中使用当前区域设置显示单个翻译?
答案 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管理员之外的其他操作,您可以将连接放入存储库。