Как извлечь необработанный запрос из построителя запросов dbr golang

Я новичок в библиотеке golang dbr (https://godoc.org/github.com/gocraft/dbr) и я не нашел информации о том, как получить необработанный запрос с помощью этой библиотеки.

Мне нужно что-то похожее на get_compiled_select() от php igniter. Мне это нужно, чтобы объединить несколько сложных запросов с объединением.

2
0
1 447
3

Ответы 3

Вы можете установить необработанную структуру из expr как общедоступную.

Надеюсь, это поможет тебе.

Вы не можете этого сделать, если не редактируете внутреннюю часть самого пакета dbr.

Nathan Phetteplace 26.08.2019 19:39

Я не уверен, что предыдущий ответ (установка структуры как общедоступной) является мудрым решением, даже если это сработает.

ИМО, лучшим решением было бы создание новой функции получения внутри select.go

func (sel *SelectStmt) GetRaw() string {
return sel.raw.Query 
}

При использовании этого метода его будет легче обслуживать.

Вы не сможете этого сделать, если не редактируете сам пакет dbr.

Nathan Phetteplace 26.08.2019 19:38

Следующее будет сбрасывать запрос ...

stmt := session.Select("*").From(table).Where("id = ?", ...)

buf := dbr.NewBuffer()
_ = stmt.Build(stmt.Dialect, buf)
fmt.Println(buf.String())

// print the interpolated values
for _, v := range stmt.WhereCond {
    fmt.Println(v)
}

Обратите внимание, что вывод не будет включать интерполированные значения.

stmt.Dialect не является допустимым свойством при использовании github.com/mailru/dbr, импортируйте github.com/mailru/dbr/dialect, а затем используйте, например, dialect.Sqlite. все равно проголосовали за.

mh-cbon 19.03.2020 14:17

Другие вопросы по теме