【问题标题】:Codeigniter database prefix add in tableCodeigniter 数据库前缀添加到表中
【发布时间】:2015-09-17 04:41:09
【问题描述】:

我有一个数据库,其中所有表名都如下所示

configuration_dst,
developer_dst,
application_dst

现在我想管理要在表名之后而不是之前添加数据库前缀的查询。 例如:

{TABLE NAME}{PREFIX}

是否可以使用 CI 3.0 进行管理?

我在 Application/configuration/database.php 中尝试过如下方式

$db['default']['dbprefix']="_dst";
$db['default']['swap_pre']="{POST}";

当前查询:

$this->db->get('templates');

当前表名:

 tablename : _dsttemplates

预期的表名称:

tablename : templates_dst

我需要在表名之后添加前缀而不是之前但没有得到任何解决方案。

【问题讨论】:

  • 上面的代码正在运行.. 为什么你发布这个?有什么错误吗??
  • 这个不工作所以在这里发帖
  • $db['default']['swap_pre'] "{POST}"; 应该是$db['default']['swap_pre']="{POST}";
  • 抱歉忘记添加 =(等号) 我想像下面的 $this->db->get('developer') 和前缀将添加 _mst 所以像 developer_mst 这样的表名目前它是添加前缀像 _mstdeveloper 和它不正确
  • $db['default']['swap_pre']="";清空这个

标签: mysql codeigniter


【解决方案1】:

唯一的选择是更改驱动程序文件。您可以使用以下步骤执行此操作:

  1. 转到/system/database/DB_query_builder.php
  2. 搜索public function dbprefix
  3. 替换

    return $this->dbprefix.$table;
    

    return $table.$this->dbprefix;
    

如果它还干扰了项目中的任何其他地方,则使用替换代码创建一个新函数,例如:

public function dbsuffix($table = '')
{
    if ($table === '')
    {
        $this->display_error('db_table_name_required');
    }

    return $table.$this->dbprefix;
}

【讨论】:

    【解决方案2】:

    手动使用数据库前缀

    如果你使用

    $this->db->set_dbprefix('newprefix');
    $this->db->dbprefix('tablename'); // outputs newprefix_tablename
    

    它总是给表名

    newprefix_tablename
    

    因为这是 Codeigniter Pastern。

    Codeigniter Prefix

    【讨论】:

    • 我知道,但我需要 tablename_prefix
    • 这样你就不能使用Codeigniter dbprefix函数了。
    • 我怎样才能实现这一点?
    • @AnkitDoshi check this
    猜你喜欢
    • 1970-01-01
    • 2013-04-07
    • 2019-01-16
    • 2011-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-26
    • 2023-01-30
    相关资源
    最近更新 更多