Zend Framework 1.0 и Oracle.

На работе надо было связаться с оракловым сервером. Так как я решил поплотнее пообщаться с Zend Framework, было решено соединяться им. К тому же он предоставляет достаточно хороший каркас для создания приложений. И со временем, я думаю, я буду использовать его всё больше.

Ну так вот. Соединился я с базой. И всё, вроде, нормально, если писать запросы руками. Т.е. «SELECT * FROM USER». Но это не очень интересно. Так как ZF предоставляет достаточно классов для работы с базой в более прозрачном режиме. НО! При попытке создать запрос его средствами, я получал ошибку. 942 ORA-00942: table or view does not exist. И дальше шёл странный такой SQL-запрос. Слабо похожий на то, что любит Oracle.

Мне сразу не очень понравились все эти кавычки вокруг имени таблицы и полей. И Ораклу они тоже не нравятся.

В документации я решения проблемы не нашёл. Долго бродил по исходному коду. Безысходно. Спросил у умных. Те объяснили мне, что эти кавычки появляются автоматически и отвечает за это переменная $_autoQuoteIdentifiers в классе Zend_Db_Adapter_Abstract.

Поначалу я на радостях просто выставил ей false, но потом понял, что модификация фреймворка не есть гуд. Потому что проблемы с обновлениями не заставят себя ждать. И тогда мне очередные умные люди объяснили, что надо просто при инициализации подключения надо указать в параметрах опцию ‘options’ => array(Zend_Db::AUTO_QUOTE_IDENTIFIERS => false). И всё будет ок.

Реклама

Один ответ to “Zend Framework 1.0 и Oracle.”

  1. блогоблог Says:

    а еще у ZF есть довольно неприятный момент при использовании PostgreSQL:

    если в постгресе тип поля массив(это когда в одной ячейке таблицы можно вписать несколько значений), то ZF его не обробатывает, а выкидывает plain-текстом. Т.е. после селекта из базы вместо массива получаем что-то вроде

    {{‘val1 foo’,’val2 foo’},{val3,’val4 foo’}}

    что неприятно — распарсить эту строку не так просто (если в значении элемента массива нет пробелов, то отсутствуют кавычки).

    пришлось писать шаманскую рекурсивную приблуду, которая делала преобразование уже после работы ZF, что не есть гут =/
    а если быть точнее, то была еще приблуда, которая делала то же самое наоборот )

Добавить комментарий

Please log in using one of these methods to post your comment:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s


%d такие блоггеры, как: