gpt4 book ai didi

php - 如何使用 Doctrine 2 + Gedmo Translatable 将翻译存储在不同的表中

转载 作者:搜寻专家 更新时间:2023-10-31 21:16:26 24 4
gpt4 key购买 nike

使用 https://github.com/l3pp4rd/DoctrineExtensions/blob/master/doc/translatable.md#advanced-examples 上的说明可以拆分一个表,以便将翻译存储在另一个表中。 生成的表结构为:

(示例 A)

 Article             ArticleTranslation
+--------------+ +----------------------+
| id | | id |
+--------------+ +----------------------+
| title | | locale |
+--------------+ +----------------------+
| content | | objectclass |
+--------------+ +----------------------+
| online | | foreign_key |
+--------------+ +----------------------+
| field |
+----------------------+

在我看来,使用这种标准方法存在两个问题:1.翻译后的实体存储在翻译表中的多条记录(每个字段一条)2.翻译表中应包含原始记录。

Doctrine+ Gedmo Translatable 是否可以像这样存储翻译:

(示例 B)

 Article             ArticleTranslation
+--------------+ +----------------------+
| id | | id |
+--------------+ +----------------------+
| online | | foreign_key |
+--------------+ +----------------------+
| locale |
+----------------------+
| title |
+----------------------+
| content |
+----------------------+

所以未翻译的字段应该在 Article 表中,已翻译的字段应该在 ArticleTranslation 表中,每篇翻译文章有一条记录。

如何实现?

最佳答案

使用当前架构,它在翻译表中为每个字段存储一条记录。一般来说,这样做是为了避免在您从实体中添加或删除可翻译字段时出现同步问题。您的方法的实现将导致有额外的模式迁移命令专门用于扩展或在后台有一些神奇的映射。为避免混淆,唯一计划更新的是原始记录翻译存储作为默认语言环境回退,没有翻译表中的记录。我知道在高级情况下,这种行为不是你会做的,但对于大多数希望尽可能简单配置的用户来说,这是一种行为。关于集合翻译,您可以使用 query hint这种行为永远不会像 SF2 那样覆盖 99% 的用例,以保持简单性

关于php - 如何使用 Doctrine 2 + Gedmo Translatable 将翻译存储在不同的表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7633734/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com