Php 使用Codeigniter的多语言数据库

Php 使用Codeigniter的多语言数据库,php,mysql,codeigniter,Php,Mysql,Codeigniter,我在数据库设计中应用了方法附加翻译方法 有了这样的表结构,每个查询的代码变得更加复杂 我的PHP模型代码: 它将自动使用带有后缀的表的方法JOIN\u translation(如上面的代码所示) 否则,查询应作为普通查询运行 如何修改db类,但不影响Codeigniter的核心系统 PHP代码(使用Codeigniter): 生成$this->db->last\u query(): 我希望它是完全自动的 我认为这可以改变db类来解决这个问题,但是直接干预核心系统是不稳定的(在核心更新中) 我

我在数据库设计中应用了方法附加翻译方法

有了这样的表结构,每个查询的代码变得更加复杂

我的PHP模型代码:

它将自动使用带有后缀的表的方法JOIN\u translation(如上面的代码所示)

否则,查询应作为普通查询运行

如何修改
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;
}