我正在尝试学习CodeIgniter,只是亲自动手处理MVC架构的model
组件。
我第一次尝试使用查询构建器,但发现它不断向我的表/列名称添加引号。解决此问题的一种方法是对它们使用所有大写字母并修复它。我讨厌写所有大写字母,所以我决定不使用查询构建器,而是$this->db->query();
。
我现在遇到的问题是我必须不断使用表名编写架构:SELECT * FROM schema.table_name
。我想避免为我需要引用的所有表编写schema.
。
我浏览了文档并看到了用于设置架构的配置,但它似乎只与 PostgreSQL 和 ODBC 驱动程序一起使用。我仍然尝试过,但当然它没有像我预期的那样工作。我仍然收到一个错误,说找不到该表。
笔记:
我以我的用户身份登录,但我需要以其他用户身份运行查询 - 即以user1
身份登录,但需要以user2.table_name
身份运行查询。
所以我能够通过在我的模型类上添加一个__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();
}
}