Запретить Zend_Db цитировать значения полей типа данных Sybase BIT

Я использую адаптер Pdo_Mssql для базы данных Sybase и устраняю возникающие проблемы. Осталась одна досадная проблема — экземпляр Zend_Db при цитировании значений поля BIT. При выполнении следующего для вставки:

$row = $this->createRow(); ... $row->MyBitField = $data['MyBitField']; ... $строка->сохранить();

Вывод журнала FreeTDS показывает:

dbutil.c:87:msgno 257: «Неявное преобразование из типа данных« VARCHAR »в« BIT »не разрешено. Используйте функцию CONVERT для запуска этого запроса.

Я пробовал приводить значения как int и bool, но, похоже, это проблема метаданных таблицы, а не проблема типа данных с вводом.

К счастью, Zend_Db_Expr прекрасно работает. Следующее работает, но я хотел бы быть независимым от сервера базы данных.

$row->MyBitField = new Zend_Db_Expr("CONVERT(BIT, {$data['MyBitField']})");

Я проверил, что descriptionTable() возвращает BIT для поля. Любые идеи о том, как заставить ZF прекратить цитировать поля MS SQL/Sybase BIT?


person Chad Kieffer    schedule 16.09.2010    source источник
comment
Похоже, что Pdo_Mssql цитирует все числовые типы данных :(   -  person Chad Kieffer    schedule 17.09.2010


Ответы (1)


Вы можете просто попробовать это (работает для битового типа mysql):

$row->MyBitField = new Zend_Db_Expr($data['MyBitField']);
person draganstankovic    schedule 31.03.2011