2

我正在使用最新版本的 postgresql、ruby 和 datamapper。

我像这样创建一个查询:

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

collection是一个DataMapper::Collection对象。DataMapper::Query只需调用即可获取对象query = collection.query。但是,如何将查询的原始 SQL 作为字符串获取?

我需要它是因为我必须自定义原始 SQL(我需要SELECT DISTINCT而不是仅需要SELECT),但我不想完全自己编写 SQL,因为我不确定是否可以编写安全查询。

我也很乐意以另一种方式归档我的目标,我愿意接受全新的建议;)

4

1 回答 1

5

这似乎不太容易,但这是一种骇人听闻的解决方案

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

query = collection.query

DataMapper.repository.adapter.send(:select_statement,query)
于 2013-02-02T11:11:24.463 回答