Я использую адаптер 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?