Установите схему базы данных в CodeIgniter для Oracle
Я пытаюсь изучить CodeIgniter и просто пачкаю руки компонентом model
архитектуры MVC.
Сначала я попытался использовать конструктор запросов, но обнаружил, что он продолжает добавлять кавычки к именам моих таблиц/столбцов. Способ исправить это - использовать на них все заглавные буквы, и это исправило ситуацию. Я ненавижу писать заглавными буквами, поэтому я решил просто не использовать конструктор запросов и вместо этого сделать $this->db->query();
.
Проблема, с которой я сталкиваюсь сейчас, заключается в том, что мне приходится постоянно писать схема с именем таблицы: SELECT * FROM schema.table_name
. Я хотел бы избежать необходимости писать schema.
для всех таблиц, на которые мне нужно ссылаться.
Я просмотрел документацию и увидел конфигурацию для настройки схем , однако похоже, что она используется только с драйверами PostgreSQL и ODBC. Я все еще пытался это сделать, но, конечно, это сработало не так, как я ожидал. Я все еще получаю сообщение об ошибке, в котором говорится, что таблица не найдена.
ПРИМЕЧАНИЯ:
Я вошел в систему как мой пользователь, но мне нужно запускать запросы как другой пользователь - т.е. вошел в систему как user1
, но должен выполнять запросы как user2.table_name
.
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();
}
}