Symfony i18n表:如何获得后备默认值?

Tom*_*Tom 3 mysql translation symfony1 geolocation internationalization

我正在MySQL中构建一个城市名称表,大约有10K行作为Symfony i18n表.基本上,默认文化是en_US,表格中的每个城市最初都是这种文化.随着时间的推移,我想添加到表中只可能在不同的语言有一个替代名称的城市,如不必复制所有对每个城市的数据"伦敦(EN_US)/伦敦(es_ES)",单独表格中的语言.

现在,根据我的理解,如果不存在翻译,Symfony将不会自动选择后备默认城市名称.所以我需要制定一个解决方案来执行以下操作:

如果存在翻译,请选择它....如果不存在,请选择默认的en_US城市名称.

到目前为止我似乎应该使用COALESCE.但是,由于我对它不是很熟悉,我想知道使用它是否有任何缺点?我问这个是因为我需要在每个城市查询中包含它,这是我网站上非常频繁的操作.

将不胜感激任何观点,甚至建议以更好的方式做事.谢谢.

Cro*_*zin 5

尝试这样的事情:

$q = Doctrine_Query::create()
     ->from('Cities c')
     ->leftJoin('c.Translation ct WITH lang IN(?)', array(array('es_ES', 'en_US')))
     ->execute();
Run Code Online (Sandbox Code Playgroud)

  • 你能编辑你的问题并发表答案吗?它可能会帮助别人. (2认同)