这是我尝试做的事情。我有一个具有以下结构的表,它应该保存任何其他表中其他数据的翻译值
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 |
在我在我的视图中使用的代码中,我有一个查找此表的函数,并以用户的语言返回字符串。如果字符串未以其语言翻译,则该函数返回应用程序默认值中的字符串(假设使用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');
这可能以某种方式完成吗?
答案 0 :(得分:0)
你所要求的并没有多大意义。您只需先进行不同的查询,然后根据结果更改第二个查询,即可“注入”。
另一种选择(可能更好)是在存储过程中完成所有这些操作,但它仍然基本相同,只需要较少的连接和加快处理速度