这是我尝试做的。我有一个具有以下结构的表,它应该在任何其他表中保存其他数据的翻译值
Translations
| Language id | translation | record_id | column_name | table_name |
====================================================================
| 1 | Hello | 1 | test_column | test_table |
| 2 | Aloha | 1 | test_column | test_table |
| 1 | Test input | 2 | test_column | test_table |
在我的视图中使用的代码中,我有一个查找该表的函数,并以用户的语言返回字符串。如果该字符串没有翻译成他的语言,该函数将返回应用程序默认的字符串(比如说 with ID = 1
)
它工作正常,但我必须通过大约 600 个视图文件来应用它......我想知道是否可以在$this->db->get()
原始记录之前在我的 CodeIgniter 模型中注入一些 SQL,将原始列替换为翻译了一个。
像这样的东西:
$this->db->select('column_name, col_2, col_3');
// Injected SQL pseudocode:
// If RECORD EXISTS in table Translations where Language_id = 2 and record_id = 2 AND column_name = test_column AND table_name = test_table
// BEGIN
// SELECT translations.translation as column_name
// WHERE translations.table_name = test_table AND column_name = test_column AND record_id = 2
// END
// ELSE
// BEGIN
// SELECT translations.translation as column_name
// WHERE translations.table_name = test_table AND column_name = test_column AND record_id = 1
// END
$this->db->get('test_table');
这有可能以某种方式完成吗?