Итак, у меня был этот вопрос раньше, и у меня был ответ под вопросом, который сработал, но я только что понял, что запрос, который я получил, не работает, как планировалось.
В основном сейчас, если это работает так
(if the roleskey contains any of the roles in slice) and (if the tenantID is an empty string) or (if tenantIDKey is equal to tenantID)
Но мне нужно
(if the roleskey contains any of the roles in slice) AND (if the tenantID is an empty string OR if tenantIDKey is equal to tenantID)
Вот мой текущий запрос:
query := bolthold.Where(roleskey).ContainsAny(bolthold.Slice(roles)...).And(tenantIDKey).Eq("").Or(bolthold.Where(tenantIDKey).Eq(tenantID))
Кто-нибудь знает, как это решить?

Пытаться:
query := bolthold.
Where(tenantIDKey).Eq("").
Or(
bolthold.
Where(tenantIDKey).
Eq(tenantID)
).
And(roleskey).
ContainsAny(bolthold.Slice(roles)...)
Или
query := bolthold.
Where(tenantIDKey).ContainsAny("", tenantID).
And(roleskey).
ContainsAny(bolthold.Slice(roles)...)
Или
query := bolthold.
Where(tenantIDKey).In("", tenantID).
And(roleskey).
ContainsAny(bolthold.Slice(roles)...)
@Мариус, да, он только что изменился, пожалуйста, протестируйте его, как только он также может отменить генерацию запроса внутри.
но это похоже на тот же запрос, только что измененный.