Привет. Использую
GORM для работы с базой данных Postgres. В консоли psql я могу просто сделать запрос (существует ли в таблице items колонка origin с таким-то значением):
SELECT EXISTS( SELECT 1 FROM items WHERE origin = 'http://example.com/path' );
и получить ответ:
?column?
----------
t
(1 row)
Сам GORM при этом предоставляет возможность выполнить SQL запрос, но как получить это значение никак не могу понять. Т.к. все примеры приведённые для использования опираются на имя колонки (столбца) в базе данных - а здесь получается, что никакой колонки нет и `f` или `t` ни к чему не привязаны. Есть вариант поступить в обход Gorm и использовать database/sql - что в принципе не приближает к цели. Насколько я понял - для получения значения нужно выполнить Scan( &VarOfType ), что неприемлемо (или я не понимаю до конца магии). Разумеется я могу просто запросить данные из таблицы, но они то мне не нужны - я просто хочу проверить существуют ли они или нет.
Ссылки:
gorm (
github |
godoc )
database/sql на godocдрайвер postgresqludp
Один из вариантов предложенный
@sim3x работает прекрасно, жаль что он удалил ответ
var thd bool
x := mygormdb.Raw(`SELECT EXISTS(
SELECT 1 FROM items WHERE origin = 'http://www.infokam.su/n17724.html' )
as isfieldexists;`).Row()
x.Scan(&thd)
fmt.Println("Result:", thd)