2013-02-02 60 views
2

我使用的是最新版本的postgresql,ruby和datamapper。如何從DataMapper :: Collection獲取原始SQL?

我創建一個查詢,如下所示:

collection = Entry.all(:id => 2..4, :text => /test/) 

collectionDataMapper::Collection對象。只需撥打query = collection.query即可獲得DataMapper::Query對象。但是,如何獲得我的查詢的原始SQL,作爲一個字符串?

我需要它,因爲我必須自定義原始SQL(我需要SELECT DISTINCT而不是隻有SELECT),但我不想自己完全寫SQL,因爲我不確定是否可以編寫一個安全查詢。

我也很樂意存檔我的目標的另一種方式,我願意完全新的建議;)

+0

最好指定實際版本號而不是說「最新」。考慮一下從現在起兩三年後看到這個問題的人。 – kgrittn

回答

5

這似乎是不太可能的easyly,但這是種hackish的解決方案

collection = Entry.all(:id => 2..4, :text => /test/) 

query = collection.query 

DataMapper.repository.adapter.send(:select_statement,query) 
+0

非常感謝你,它只是工作;) –

相關問題