在CodeIgniter for Oracle中设置数据库架构

时间:2018-08-30 20:51:29

标签: php oracle codeigniter schema

我正在尝试学习CodeIgniter,并且只是想着MVC体系结构的model组件。

我首先尝试使用查询生成器,但发现它一直在为表/列名称添加引号。一种修复方法是使用所有大写字母并加以固定。我不喜欢用大写字母写,所以我决定不使用查询生成器,而是使用$this->db->query();

我现在遇到的问题是,我必须不断用表名SELECT * FROM schema.table_name编写模式。我想避免为我需要引用的所有表编写schema.

我浏览了文档,看到了a configuration for setting schemas,但似乎仅用于PostgreSQL和ODBC驱动程序。我仍然尝试过,但是当然没有按我预期的那样工作。我仍然收到一条错误消息,说找不到该表。

注释:

我以用户身份登录,但我需要以其他用户身份运行查询-即以user1身份登录,但需要以user2.table_name身份运行查询。

1 个答案:

答案 0 :(得分:1)

因此,我可以通过在模型类上添加__construct()来解决此问题。

class My_model extends CI_Model {
  public function __construct() {
    $this->db->query("ALTER SESSION SET CURRENT_SCHEMA = my_schema");
  }

  public function get_awesome_user() {
    $this->db->select("u.username, u.firstname, u.lastname");
    $this->db->from("sys_users u");
    $this->db->where("u.username", $this->input->post("username"));

    $query = $this->db->get();
    return $query->result();
  }
}