Я пытаюсь изучить CodeIgniter и просто пачкаю руки с компонентом model архитектуры MVC.
Сначала я попытался использовать построитель запросов, но обнаружил, что он продолжает добавлять кавычки к именам моих таблиц / столбцов. Способ исправить это - использовать все заглавные буквы на них и исправить это. Я ненавижу писать заглавными буквами, поэтому решил просто не использовать построитель запросов и вместо этого использовать $this->db->query();.
Проблема, с которой я столкнулся прямо сейчас, заключается в том, что мне приходится постоянно писать схему с именем таблицы: SELECT * FROM schema.table_name. Я бы не хотел писать schema. для всех таблиц, на которые мне нужно ссылаться.
Я просмотрел документацию и увидел конфигурация для настройки схем, но похоже, что он используется только с драйверами PostgreSQL и ODBC. Я все еще пробовал, но, конечно, это не сработало, как я ожидал. Я по-прежнему получаю сообщение об ошибке, что таблица не найдена.
ПРИМЕЧАНИЯ:
Я вошел в систему как мой пользователь, но мне нужно выполнять запросы как другой пользователь, то есть вошел в систему как user1, но мне нужно выполнять запросы как user2.table_name.
@ schema: в документации по CI 3.0 говорится: The database schema, defaults to ‘public’. Used by PostgreSQL and ODBC drivers.
@Vickel Проблему с котировками я уже решил, сделав $db['default']['_protect_identifiers'] = false;. Вы знаете, как избежать необходимости постоянно предоставлять схему?






Так что я смог решить эту проблему, добавив __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();
}
}
@ без обратных кавычек: stackoverflow.com/a/31111046/2275490