Фильтрация по списку значений с помощью 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:

Проверьте свои знания

1. Какой оператор PostgreSQL следует использовать для фильтрации по списку значений?
2. Какая функция преобразует Go-срез в формат массива PostgreSQL?
3. Почему подход с оператором ANY и pq.Array() эффективен?

Похожие статьи

30 марта 2020 г.

GORM: фильтрация сущности по связанной сущности

Эта задача не так проста, особенно с GORM.

Read More → Gorm Sql Postgresql