Установите схему базы данных в CodeIgniter для Oracle


Я пытаюсь изучить CodeIgniter и просто пачкаю руки компонентом model архитектуры MVC.

Сначала я попытался использовать конструктор запросов, но обнаружил, что он продолжает добавлять кавычки к именам моих таблиц/столбцов. Способ исправить это - использовать на них все заглавные буквы, и это исправило ситуацию. Я ненавижу писать заглавными буквами, поэтому я решил просто не использовать конструктор запросов и вместо этого сделать $this->db->query();.

Проблема, с которой я сталкиваюсь сейчас, заключается в том, что мне приходится постоянно писать схема с именем таблицы: SELECT * FROM schema.table_name. Я хотел бы избежать необходимости писать schema. для всех таблиц, на которые мне нужно ссылаться.

Я просмотрел документацию и увидел конфигурацию для настройки схем , однако похоже, что она используется только с драйверами PostgreSQL и ODBC. Я все еще пытался это сделать, но, конечно, это сработало не так, как я ожидал. Я все еще получаю сообщение об ошибке, в котором говорится, что таблица не найдена.

ПРИМЕЧАНИЯ:

Я вошел в систему как мой пользователь, но мне нужно запускать запросы как другой пользователь - т.е. вошел в систему как user1, но должен выполнять запросы как user2.table_name.

Author: uom-pgregorio, 2018-08-30

1 answers

Поэтому я смог решить эту проблему, добавив __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();
  }
}
 1
Author: uom-pgregorio, 2018-08-31 18:03:34