让我们说我有模特' Pages'它有:name,:content,:title ...... etc
我的一个要求是每个属性需要使用3种语言,并且由于这些页面将存储在数据库中,因此使用平面i18n文件是不可能的
我过去的解决方案是使用两个表和一个连接:
的网页:
id名称
pages_meta:
page_id标题内容language_id
在普通SQL中我会选择:
SELECT * FROM pages p LEFT JOIN pages_meta pm ON p.id = pm.page_id
WHERE language_id = (server_variable for current language)
如何在轨道或燃料模式中实现模型(我在这个项目中使用fuelphp,而在另一个项目中使用rails)但问题是相同的,我并没有询问如何编码它,我将如何实现这一目标,或者我不得不使用orm并使用纯SQL?)
我可以使用many_to_many或has_many关系,但我认为这会引入处理每个模型的复杂性,因为它在结尾处都是相同的数据
编辑:ORM =>对象关系映射,FuelPHP是PHP中HMVC库的名称
编辑2:
FuelPHP ORM database schema for i18n, opinions/suggestions
我完全了解这个相关的问题,但是他提出的三个解决方案并不完全是我正在寻找的,我正在寻找一种存储数据的方法在不同的表中,并将它们作为相同的模型处理,即使我主要对语言感兴趣,还有其他情况我需要将数据分开
对于rails也有一个名为globalize的gem,可以对ORM模型的字段进行i18n-ize,但仍然不使用不同的表