Php 使用Codeigniter的多语言数据库
我在数据库设计中应用了方法附加翻译方法 有了这样的表结构,每个查询的代码变得更加复杂 我的PHP模型代码: 它将自动使用带有后缀的表的方法JOIN\u translation(如上面的代码所示) 否则,查询应作为普通查询运行 如何修改Php 使用Codeigniter的多语言数据库,php,mysql,codeigniter,Php,Mysql,Codeigniter,我在数据库设计中应用了方法附加翻译方法 有了这样的表结构,每个查询的代码变得更加复杂 我的PHP模型代码: 它将自动使用带有后缀的表的方法JOIN\u translation(如上面的代码所示) 否则,查询应作为普通查询运行 如何修改db类,但不影响Codeigniter的核心系统 PHP代码(使用Codeigniter): 生成$this->db->last\u query(): 我希望它是完全自动的 我认为这可以改变db类来解决这个问题,但是直接干预核心系统是不稳定的(在核心更新中) 我
db
类,但不影响Codeigniter的核心系统
PHP代码(使用Codeigniter): 生成
$this->db->last\u query()
:
我希望它是完全自动的
我认为这可以改变db
类来解决这个问题,但是直接干预核心系统是不稳定的(在核心更新中)
我真的很感谢你帮我解决问题 这可能有助于您解决问题。我不知道您是如何使用该配置文件的,但可以实现以下功能:
function your_function($multilingual = false) {
$table = 'blog';
if ($multilingual === true) {
$this->db->select('t.title, t.content');
$this->db->join($table . '_translation AS t', 'm.id = t.parent_id', 'left');
$this->db->where('t.language_id', LANGUAGE);
$query = $this->db->get($table . ' AS m')->result_array();
} else {
$this->db->select('m.id, m.title, m.content');
$query = $this->db->get($table . ' AS m')->result_array();
}
return $query;
}
您可以创建一个视图,只需调用:
$this->db->where('t.language\u id',language)
,但我真的不知道这是否是一个更好的解决方案。您从何处获得模型中的多语言
值我在config/constants.php中设置了它谢谢您,但这不是我想要的。。。我刚刚更新了我的问题,描述可能有更详细的我想要的,你回头看看,希望你或有人能帮助我!这可以通过使用我的代码来实现,你需要按照上面所示的方式放置你的查询。我将其发布为,因为我不知道你如何处理多语言的东西。银行,我刚刚有一个想法,在模型中进行修改,显然它可以解决我的问题!(仅供参考:如果我的回答真的对你有帮助,你可以接受或投票支持。)
$table = 'blog';
$this->db->select('id, title, content');
$query = $this->db->get($table);
// Query 1:
$this->db->select('id, title, content');
$query = $this->db->get('blog');
// Query 2:
$this->db->select('id, title, content');
$this->db->where('id', 1);
$query = $this->db->get('blog');
if (MULTILINGUAL) {
// Query 1:
// SELECT t.title, t.content FROM blog AS m LEFT JOIN blog_translation AS t ON m.id = t.parent_id WHERE t.language_id = 1
// Query 2:
// SELECT t.title, t.content FROM blog AS m LEFT JOIN blog_translation AS t ON m.id = t.parent_id WHERE t.language_id = 1 WHERE m.id = 1
else {
// Query 1:
// SELECT title, content FROM blog
// Query 2:
// SELECT title, content FROM blog WHERE id = 1
}
function your_function($multilingual = false) {
$table = 'blog';
if ($multilingual === true) {
$this->db->select('t.title, t.content');
$this->db->join($table . '_translation AS t', 'm.id = t.parent_id', 'left');
$this->db->where('t.language_id', LANGUAGE);
$query = $this->db->get($table . ' AS m')->result_array();
} else {
$this->db->select('m.id, m.title, m.content');
$query = $this->db->get($table . ' AS m')->result_array();
}
return $query;
}