Doctrine orm 高级/自定义原则ORM关系(TYPO3翻译实体)

Doctrine orm 高级/自定义原则ORM关系(TYPO3翻译实体),doctrine-orm,Doctrine Orm,我正处于一个不幸的境地,要维护一个TYPO3项目。Typor3 ORM使用起来非常缓慢和笨拙,因此我想在我的一些读取操作中使用它 TYPO3有一种非常奇怪的存储翻译的方式,因此我的表看起来像这样: > products id --- 123 64 37 > product_names product_id | locale | name ---------------------------------- 64 | en | My Product

我正处于一个不幸的境地,要维护一个TYPO3项目。Typor3 ORM使用起来非常缓慢和笨拙,因此我想在我的一些读取操作中使用它

TYPO3有一种非常奇怪的存储翻译的方式,因此我的表看起来像这样:

> products
 id
---
123
 64
 37

> product_names
product_id | locale | name
----------------------------------
        64 | en     | My Product
        64 | de     | Mein Artikel
假设当前语言环境在某种神奇的全局变量中总是可用的,有没有办法将其映射到ORM中的以下类?基本上是在连接条件中添加一个static和locale=en。或者是自定义类型?或者某种代理?我不知道

class Product {
    private string $id;
    private ProductName $name;
}

class ProductName {
    private string $name;
}
显然,我不能真正改变数据库或类结构,因为TYPO3希望这样


目前,我唯一的想法是使用事件订阅者在postLoad中为名称添加某种代理,但这将带来巨大的开销,即每次需要访问产品名称时,都要对每个产品进行单独的DB查询。

这种结构不是TYPO3处理翻译的常用方式

正常翻译由同一表中原始记录的副本处理,但带有指向原始l18n_父项的指针和指示当前语言sys_language_uid的字段

附加的TYPO3不是按地区处理语言,而是按声明的语言UID处理语言。因此,相同的id可以代表不同安装中的不同语言


对我来说,您的数据结构似乎是从其他地方导入的。

我试图为非T3用户简化/澄清它。是的,我有sys\u language\u uid和l10n\u parent,但这不会改变我问题的性质。你一点也没有回答。如果你有真正的TYPO3结构,请尝试优化TYPO3,而不是插入外部内容来优化一个查询,这可能会与TYPO3缓存冲突并阻止以后的更新。非常感谢你尝试从T3方面帮助我,但这根本不是我想要的。我希望尽可能远离任何框架,而不是将自己更多地束缚在它们之上。