Заключение имени столбца в спецсимволы

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
Аватара пользователя
aser
Сообщения: 167
Зарегистрирован: 2009.04.02, 14:25
Откуда: Киев

Заключение имени столбца в спецсимволы

Сообщение aser »

Есть сайт который я переписал с ASP на PHP под Yii, но оставил СУБД MS SQL. Теперь решили мигрировать еще с MS SQL на MySQL.

Условие заключается в использовании имен полей которые игнорировались в MS SQL и не игнорируется в MySQL к примеру `Show`, `Date`. Так же код должен быть адаптирован под свободное переключение между MySQL и MS SQL, потому конструкции формирующие запрос должны быть не зависимые от СУБД.

В MS SQL для определения полей используется '[', ']', а для MySQL '`'.

Вопрос, как заставить AR формировать эти самые экраны.

Вот пример:

Код: Выделить всё

                $criteria = new CDbCriteria(array(
                'select'=>'Id, Title, SmallPicture, [Date], ViewsCount / (DATEDIFF(dd, [Date], GETDATE()) + 1) as VoteCount',
                'limit'=>$this->count,
            ));
 
Я предполагал что должно быть что то на подобии того как работает добавление префиксов для имен таблицы '{{table}}'.

zibert02
Сообщения: 203
Зарегистрирован: 2010.11.24, 17:29

Re: Заключение имени столбца в спецсимволы

Сообщение zibert02 »

попробуйте указывать префикс таблицы для полей date- table.date. насчет кавычек-если не ошибаюсь то одинарная кавычка работает и там и там

Аватара пользователя
aser
Сообщения: 167
Зарегистрирован: 2009.04.02, 14:25
Откуда: Киев

Re: Заключение имени столбца в спецсимволы

Сообщение aser »

zibert02 писал(а):попробуйте указывать префикс таблицы для полей date- table.date. насчет кавычек-если не ошибаюсь то одинарная кавычка работает и там и там
неа, PDA генерит исключение ;), а насчет префикса что то и не подумал, спс за мыслю!!!

zibert02
Сообщения: 203
Зарегистрирован: 2010.11.24, 17:29

Re: Заключение имени столбца в спецсимволы

Сообщение zibert02 »

странно, где генерит исключение? в мускуле?
например такая команда работает
SELECT *
FROM users
WHERE email = 'bla@bk.ru'

Аватара пользователя
aser
Сообщения: 167
Зарегистрирован: 2009.04.02, 14:25
Откуда: Киев

Re: Заключение имени столбца в спецсимволы

Сообщение aser »

Вот только формат функции DATEDIFF тоже разный :), все равно придется отдельно делать :(. Наверное просто нужно получить какой драйвер используется и для него составить другое условие.

Аватара пользователя
aser
Сообщения: 167
Зарегистрирован: 2009.04.02, 14:25
Откуда: Киев

Re: Заключение имени столбца в спецсимволы

Сообщение aser »

zibert02 писал(а):странно, где генерит исключение? в мускуле?
например такая команда работает
SELECT *
FROM users
WHERE email = 'bla@bk.ru'
такое нет, а попробуй ;)

Код: Выделить всё

SELECT *
FROM users
WHERE show = 1

zibert02
Сообщения: 203
Зарегистрирован: 2010.11.24, 17:29

Re: Заключение имени столбца в спецсимволы

Сообщение zibert02 »

aser писал(а):
zibert02 писал(а):странно, где генерит исключение? в мускуле?
например такая команда работает
SELECT *
FROM users
WHERE email = 'bla@bk.ru'
такое нет, а попробуй ;)

Код: Выделить всё

SELECT *
FROM users
WHERE show = 1
догадываюсь что show это служебное выражение, тут не в кавычках дело
а насчет DATEDIFF не спорю- могу и различаться, там вобще куча различий, кстати можете попробовать на уровне yii делать такие запросы

Аватара пользователя
Caveman
Сообщения: 152
Зарегистрирован: 2009.04.04, 20:56
Откуда: Москва
Контактная информация:

Re: Заключение имени столбца в спецсимволы

Сообщение Caveman »

Думаю, это то, что вам нужно:
CDbSchema::quoteSimpleColumnName()

Аватара пользователя
slavcodev
Сообщения: 3133
Зарегистрирован: 2009.04.02, 21:42
Откуда: Altea, Spain
Контактная информация:

Re: Заключение имени столбца в спецсимволы

Сообщение slavcodev »

Caveman писал(а):Думаю, это то, что вам нужно:
CDbSchema::quoteSimpleColumnName()
Обрати внимание метод появился в версии 1.1.6
Жду Yii 3!

Аватара пользователя
Caveman
Сообщения: 152
Зарегистрирован: 2009.04.04, 20:56
Откуда: Москва
Контактная информация:

Re: Заключение имени столбца в спецсимволы

Сообщение Caveman »

mc-bear писал(а):
Caveman писал(а):Думаю, это то, что вам нужно:
CDbSchema::quoteSimpleColumnName()
Обрати внимание метод появился в версии 1.1.6
На самом деле раньше метод был под другим названием, но он был.

Аватара пользователя
slavcodev
Сообщения: 3133
Зарегистрирован: 2009.04.02, 21:42
Откуда: Altea, Spain
Контактная информация:

Re: Заключение имени столбца в спецсимволы

Сообщение slavcodev »

да был CDbSchema::quoteTableName() но это другое :)
меня например пугало tableName, для использования к атрибутам :)
Жду Yii 3!

Аватара пользователя
Caveman
Сообщения: 152
Зарегистрирован: 2009.04.04, 20:56
Откуда: Москва
Контактная информация:

Re: Заключение имени столбца в спецсимволы

Сообщение Caveman »

mc-bear писал(а):да был CDbSchema::quoteTableName() но это другое :)
меня например пугало tableName, для использования к атрибутам :)
Вполне нормальный метод :)
Делал все то, что должен. Он парсил на части запись вида "таблица.столбец", а затем "кавычил" имя таблицы и столбца.

Аватара пользователя
aser
Сообщения: 167
Зарегистрирован: 2009.04.02, 14:25
Откуда: Киев

Re: Заключение имени столбца в спецсимволы

Сообщение aser »

Спасибо!!!

Ответить