Как убрать двойные кавычки при запросе к бд oracle в yii2?

конфиг и прочее прописал делаю простой запрос
public function actionTest() {
        $rows = (new \yii\db\Query())
        ->select()
        ->from("mytable")
        ->limit(10)
        ->all();
        return $rows;
    }

выдает следующую ошибку

SQLSTATE[HY000]: General error: 942 OCIStmtExecute: ORA-00942: таблица или представление пользователя не существует
(/tmp/pear/download/PDO_OCI-1.0/oci_statement.c:142)
The SQL being executed was:
WITH USER_SQL AS (SELECT * FROM "mytable"),
PAGINATION AS (SELECT USER_SQL.*, rownum as rowNumId FROM USER_SQL)
SELECT *
FROM PAGINATION
WHERE rownum <= 10

ошибка как я понял что подставляются двойные кавычки в FROM "mytable" без них запрос выполняется. Как их убрать?

return [
    'class' => 'yii\db\Connection',
    'dsn' => 'oci:dbname=//localhost:1521/ddbm',
    'username' => 'name_user',
    'password' => 'pasword_user',
    'charset' => 'utf-8',
    // Schema cache options (for production environment)
//    'enableSchemaCache' => true,
//    'schemaCacheDuration' => 60,
//    'schemaCache' => 'cache',
];
  • Вопрос задан
  • 634 просмотра
Пригласить эксперта
Ответы на вопрос 2
proudmore
@proudmore
Конфиг компонента коннектора к базе (db) в студию.
Ответ написан
@StrangerInTheKy
ошибка как я понял что подставляются двойные кавычки в FROM "mytable" без них запрос выполняется. Как их убрать?
Подозреваю, что кавычки убирать не нужно и даже вредно.
Тут проблема в том, что по умолчанию Oracle создает таблицы с названиями в верхнем регистре. Если вы напишете
create table mytable ...
Будет создана таблица c названием MYTABLE. То есть названия получаются как бы регистронезависимые. Но Oracle также дает возможность использовать и регистрозависимые названия (в том числе с кириллицей, спецсимволами, пробелами и прочим). Для этого надо название написать в кавычках. Например, можно создать даже такую таблицу:
create table "Йа табличко!" ...
И обращаться к ней соответственно:
select * from "Йа табличко!"
То есть ваш фреймворк просто учитывает эту особенность оракла, и вам тоже стоит учесть. Просто передавайте название как MYTABLE
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы