我使用DBAL作爲獨立的沒有ORM,因爲我不需要它。不過,我現在在查詢中使用oracle關鍵字時會出現一些問題 比如我有以下代碼:Doctrine DBAL和Oracle關鍵字
$journal = array(
'LGM_ID' => 'SEQ_JOURNAL.NEXTVAL',
'LGM_USER_LOGIN' => "a user",
'LGM_DATE' => 'CURRENT_TIMESTAMP'
);
$db->insert('JOURNAL', $journal);
而且這也不行,我得到以下錯誤:
ORA-01722: invalid number
我想這是因爲序列的使用。一個整數替換數組中的第一個項目之後,我有以下錯誤:
ORA-01858: a non-numeric character was found where a numeric was expected
這一次,我想這是因爲CURRENT_TIMESTAMP關鍵字。
我想在當時通過查詢關鍵字轉換爲字符串時,它不起作用。有什麼方法可以使用序列或其他關鍵字,而不使用ORM等額外的東西?
對於序列我想我可以運行另一個請求之前獲得nextval。 但是,對於CURRENT_TIMESTAMP,我實際上並不想使用php日期時間,因爲我的日期是時區分割的,它會爲oracle完美處理的函數添加額外的代碼。
我最後的解決方案是將完整查詢寫爲字符串並使用$ db-> query(...),但它不是抽象層的目標。
非常感謝您的幫助。
你可以記錄'$ db-> insert('JOURNAL',$ journal);'發送給Oracle的SQL語句嗎? – 2013-04-11 15:22:49
嗨,我很新的DBAL,所以我不知道如何輕鬆做到這一點。我會檢查文件並儘快回覆給你。 – user1923976 2013-04-12 07:24:31