0

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

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

为了在表单中实现它以获取翻译输入,我配置了 a2lix 翻译表单。

有没有办法在奏鸣曲管理员中使用当前语言环境显示单个翻译?

4

1 回答 1

2

您必须将连接与翻译表一起放置,这将减少为每条记录查询数据库的查询数量。然后它将检查当前对象。

喜欢:

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

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

    return $query;
}

它将在 Sonata Admin 中运行。如果您想在奏鸣曲管理员之外执行此操作,您可以将连接放入存储库。

于 2014-11-17T10:50:21.787 回答