我正在尝试学习CodeIgniter,并且只是想着MVC体系结构的model
组件。
我首先尝试使用查询生成器,但发现它一直在为表/列名称添加引号。一种修复方法是使用所有大写字母并加以固定。我不喜欢用大写字母写,所以我决定不使用查询生成器,而是使用$this->db->query();
。
我现在遇到的问题是,我必须不断用表名SELECT * FROM schema.table_name
编写模式。我想避免为我需要引用的所有表编写schema.
。
我浏览了文档,看到了a configuration for setting schemas,但似乎仅用于PostgreSQL和ODBC驱动程序。我仍然尝试过,但是当然没有按我预期的那样工作。我仍然收到一条错误消息,说找不到该表。
注释:
我以用户身份登录,但我需要以其他用户身份运行查询-即以user1
身份登录,但需要以user2.table_name
身份运行查询。
答案 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();
}
}