Как мне искать подстроку в поле JSON в MySQL (Knex / Bookshelf)? - PullRequest
0 голосов
/ 07 ноября 2019

Я использую Книжную полку / Knex для ORM. У меня есть база данных MySQL с таблицей, в которой есть поле JSON под названием «данные». Внутри этого поля есть ключ «заголовок» и ключ «сообщение». Я хочу вернуть все строки, которые имеют подстроку "searchString" в data.title или data.message. Как я могу это сделать?

Будет ли это работать?

qb.raw(`data->'title' LIKE ${searchString} OR data->'message LIKE ${searchString}`)

1 Ответ

0 голосов
/ 07 ноября 2019

Это работает:

const results = await new Modelname()
                .query((qb) => {
                        qb.whereRaw(
                           `JSONColumnName->
                               '$.JSONFieldName' LIKE "%${searchString}%"`)
                })
                .fetch();

"JSONColumnName" - это имя столбца JSON, "JSONFieldName" - это имя некоторого поля JSON внутри этого столбца.

...