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

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

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

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

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

ПРИМЕЧАНИЯ:

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

@ без обратных кавычек: stackoverflow.com/a/31111046/2275490

Vickel 31.08.2018 00:59

@ schema: в документации по CI 3.0 говорится: The database schema, defaults to ‘public’. Used by PostgreSQL and ODBC drivers.

Vickel 31.08.2018 01:06

@Vickel Проблему с котировками я уже решил, сделав $db['default']['_protect_identifiers'] = false;. Вы знаете, как избежать необходимости постоянно предоставлять схему?

Patrick Gregorio 31.08.2018 19:45
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
3
870
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 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();
  }
}

Другие вопросы по теме