Sybaseデータベースに対してPdo_Mssqlアダプターを使用しており、発生した問題を回避しています。残っている厄介な問題の1つは、BITフィールド値の引用に関するZend_Dbのインスタンスです。挿入のために以下を実行する場合:
$ row = $ this-> createRow(); ... $ row-> MyBitField = $ data ['MyBitField']; ... $ row-> save();
FreeTDSログ出力は次のことを示しています。
dbutil.c:87:msgno 257:"データ型'VARCHAR'から'BIT'への暗黙の変換は許可されていません。CONVERT関数を使用してこのクエリを実行してください。
値をintおよびboolとしてキャストしようとしましたが、これはテーブルメタデータの問題であり、入力のデータ型の問題ではないようです。
幸い、Zend_Db_Exprはうまく機能します。以下は動作しますが、データベースサーバーに依存しないようにしたいと思います。
$ row-> MyBitField = new Zend_Db_Expr( "CONVERT(BIT、{$ data ['MyBitField']})");
describeTable()がフィールドのBITを返していることを確認しました。ZFにMSSQL/ Sybase BITフィールドの引用を停止させる方法に関するアイデアはありますか?