Фильтрация по списку значений с помощью GORM

7 апреля 2020 г. Gorm Sql Postgresql


Когда необходимо отфильтровать данные по списку значений (например, по ID: 1, 2, 3), следует использовать оператор ANY в сочетании с pq.Array из драйвера PostgreSQL.

Решение

Вот как можно отфильтровать записи по списку ID:

var priceIDs = []uint{1, 2, 3}
if err := db.Model(prices).Where("id = ANY(?)", pq.Array(priceIDs)).Find(&prices).Error; err != nil {
    return err
}

Функция pq.Array() преобразует Go-срез в формат массива PostgreSQL, который можно использовать с оператором ANY. Этот подход эффективен и хорошо работает с построителем запросов GORM.

Tags: