Doctrine2 Postgres JSONB如何搜索

时间:2016-03-10 05:35:22

标签: 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
}

在表格中我有一些被禁止的对象设置为一些guid,一些对象有空数组,有些对象根本没有bannedIn属性。

现在我试图获取bannedIn包含"00000000-0000-0000-8888-000000000001"(WORKS)

的每一行

当我尝试获取bannedIn不包含"00000000-0000-0000-8888-000000000001"(WORKS)的每一行

但是当我查询计算所有属性没有禁用的所有内容时,它会以0计数回退,即使我有1K对象没有禁止使用。

WORKS

$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哪里没有key? 我也试过以下,没用。 的?通过调用函数jsonb_exists(column_name, value)

来实现operator

0 个答案:

没有答案