Установить схему базы данных в CodeIgniter для Oracle - PullRequest
0 голосов
/ 30 августа 2018

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

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

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

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

ПРИМЕЧАНИЯ:

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

1 Ответ

0 голосов
/ 31 августа 2018

Итак, я смог решить эту проблему, добавив __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();
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...