Yii2 ActiveRecord按可翻译字段排序

时间:2016-01-12 11:36:20

标签: php yii2

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

例如,在表格专业中,我有一行name取值为Accounting,西班牙语为Contabilidad。如果我用西班牙语显示该表,则该行应显示在下方而不是英语中,并且这种情况不会发生。

解决方案:我最终将数据库中的所有记录作为数组提取,使用Yii :: t进行翻译,然后将其放入ArrayDataProvider。还有一件事:为了允许过滤,我还要用PHP函数fnmatch检查数组的对应列。

1 个答案:

答案 0 :(得分:1)

您希望在mysql请求中动态翻译Accounting。这不行。

您有两种方式:

  • 在表字段name_spanish创建并在mysql中按此字段进行排序。
  • 获取所有记录,按Yii::t()翻译值并在php中执行排序。