2016-01-12 85 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中執行排序。