dan*_*l14 5 php doctrine-orm postgresql-9.3 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
}
Run Code Online (Sandbox Code Playgroud)
在表中,我有一些对象被禁止在某些 guids 中,一些对象有空数组,而一些对象根本没有bannerIn 属性。
现在我试图获取bannedIn包含的每一行"00000000-0000-0000-8888-000000000001"(WORKS)
当我尝试获取bannedIn不包含的每一行时"00000000-0000-0000-8888-000000000001"(WORKS)
但是当我查询计算所有没有bannedIn的属性时,它会以0计数回退,即使我有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%');
Run Code Online (Sandbox Code Playgroud)
有没有办法在key不存在的情况下查询jsonb?我也试过跟随,没有奏效。这 ?操作符是通过调用它的函数来实现的jsonb_exists(column_name, value)