2016-01-12 52 views
0

我在我的数据库中有一个表,其中有一个name字段,我想要翻译的内容。我正在使用lajax/translate-manager,它工作正常。问题出现在我想通过name对GridView(或其他窗口小部件)中的数据进行排序时。当我查询数据库时,我指定name作为排序字段,但是它以存储的语言(英语)完成。然后我使用GridView列中的Yii::t()函数输出字段并将其转换,但显然排序保持不变。Yii2 ActiveRecord按可翻译字段排序

例如,在表格行业中,我有一行,其中name取值Accounting,西班牙文中的值为Contabilidad。如果我用西班牙语显示该表,该行应该显示为低于英文,并且不会发生。

解决方案:我结束了从数据库中获取的所有记录的阵列,与谊::牛逼翻译它们,然后把它变成一个ArrayDataProvider。还有一件事:为了允许过滤,我还用PHP的函数fnmatch检查了数组的相应列。

回答

1

您希望在mysql请求中即时翻译Accounting。这不是工作。

有两种方式:

  • 在创建表字段name_spanish并在MySQL做排序这一领域。
  • 获取所有记录,翻译值Yii::t()并在php中执行排序。