我有一個正在從MySql移動到Sql Server的CakePHP應用程序。有一個查詢似乎並不正確傳輸:CakePHP - 生成的查詢與SQL Server無法正常工作
$this->Model->find('all', array(
'conditions' => array(
'Model.column' => array(1, 2, 3)
)
)
);
當我使用這個語法與MySQL,它似乎「解包」的陣列 正確,並且生成的查詢是一樣的東西
「 ... WHERE 'Model.column' IN(1,2,3)... 「
當我使用SQL Server,生成的查詢是
」 ... WHERE 'Model.column' IN '陣列'「...
這顯然會產生一個錯誤。我昨天在CakePHP Google Group上發佈了這個問題,但還沒有收到回覆,所以我想我會試試。如果任何人有任何想法/建議,我將不勝感激。
只是增加:這是正確的,因爲''Array''似乎是一個自動數組字符串由PHP完成。它*應該*拋出一個通知,如果這樣做。 *應該*幫助找到*演員正在完成的地方。 – deceze 2010-03-10 23:22:59
對不起,我不清楚,但沒有兩個安裝的蛋糕。我的應用程序是使用MySQL作爲數據庫開發的,但現在管理員希望它使用SQL Server,所以我試圖調試生成的查詢中的任何不一致。我在Linux機器上使用1.2.6。我沒有在cake/libs/model/datasources/dbo/dbo_mssql.php中看到任何會覆蓋默認行爲的東西,所以我將嘗試查找更多關於正在執行的演員的信息。 – 2010-03-12 15:50:34
只需檢查一下,看看你是否取得了進展。我猜這是甚至相同的機器,所以PHP版本將是相同的。 PHP和調試器可能會很痛苦。跟蹤代碼的簡單方法是編輯dbo_mssql。PHP和發現: function _execute($ sql){ return mssql_query($ sql,$ this-> connection); } 並將其更改爲: 函數_execute($ sql){ $ this-> log(debug_backtrace()); return mssql_query($ sql,$ this-> connection); } 它會在您的日誌中轉儲大量數據,但您會得到很多狀態信息。 – 2010-03-24 16:19:04