CodeIgniter - ActiveRecords и Oracle - конфигурация

У меня была проблема с ActiveRecords - CI добавляет скобки к именам таблиц - поэтому oracle возвращает ошибки.

Вот немного информации, как это исправить :)

сначала настройте базу данных

Мой старый конфиг днс выглядит так

$dsn = array(
    'phptype'   => 'oci8',
    'hostspec'  => '192.xx.215.xx',
    'service'   => 'yyyyy',
    'port'      => '1521',
    'username'  => 'zzzzz',
    'password'  => 'aaaaa'
);

Поэтому я добавил вapplication\config\database.php этот:

$db['oracle']['hostname'] = "192.xx.215.xx/yyyyy";
$db['oracle']['username'] = "zzzzz";
$db['oracle']['password'] = "ttttt";
$db['oracle']['database'] = "dbname.table";
$db['oracle']['dbdriver'] = "oci8";
$db['oracle']['dbprefix'] = "";
$db['oracle']['pconnect'] = FALSE; //must be false
$db['oracle']['db_debug'] = TRUE;
$db['oracle']['cache_on'] = FALSE;
$db['oracle']['cachedir'] = "";
$db['oracle']['char_set'] = "utf8";
$db['oracle']['dbcollat'] = "utf8_general_ci";

вsystem\database\drivers\oci8\oci8_driver.php заменить линию

return preg_replace('/['.$this->_escape_char.']+/', $this->_escape_char, $str);

с

// remove duplicates if the user already included the escape
$str = preg_replace('/['.$this->_escape_char.']+/', $this->_escape_char, $str);
$str =  rtrim($str,'"');
$str =  ltrim($str,'"');
$str =  str_replace('"."', '.', $str);

return $str;

Теперь я могу назвать вашу модель

$this->oracle = $this->load->database('oracle', TRUE);

Теперь Oracle и Ci должны работать! :)

Ответы на вопрос(0)

Ваш ответ на вопрос