Doctrine2 Postgres JSONB, как искать

Я использую Postgres JSONB, чтобы хранить кучу свойств в одном поле для одной сложной системы.

Там, где у меня есть одно поле, это называется свойствами, а свойства имеют деревья объектов.

Вот небольшой фрагмент данных из свойств.

{
"urls": [],
"games": false,
"images": [],
"rating": null,
"founded": 0,
"bannedIn": ["00000000-0000-0000-8888-000000000001",
"00000000-0000-0000-8888-000000000002"],
"comments": "",
"chat": false
}

В таблице у меня есть некоторые объекты, для которых bannedIn имеет некоторые направляющие, у некоторых объектов есть пустой массив, а у некоторых объектов вообще нет свойства bannedIn.

Теперь я пытаюсь получить все строки, где содержится bannedIn "00000000-0000-0000-8888-000000000001" (РАБОТАЕТ)

Когда я пытаюсь получить каждую строку, где bannedIn не содержит "00000000-0000-0000-8888-000000000001" (РАБОТАЕТ)

Но когда я запрашиваю подсчет всех, где свойства вообще не имеют bannedIn, это происходит с нулевым счетом, даже если у меня есть объект 1K без bannedIn.

РАБОТАЕТ

$builder = $entityManager->createQueryBuilder()
->select('e')
->from(Entity::class, 'e')
->where('e.otherObject = :guid')->setParameter('guid', $guid)
->andWhere('GET_JSON_FIELD(e.properties, \'bannedIn\') LIKE ?1')
->setParameter(1, '%00000000-0000-0000-8888-000000000001%');

Есть ли способ запросить JSONB, где ключ не существует?
Я также попытался следовать, не работал.
? Оператор реализуется путем вызова его функции jsonb_exists(column_name, value)

3

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]