MySQL Запрос найти запись по значению JSON - PullRequest
0 голосов
/ 14 апреля 2020

В моей базе данных есть поле местоположения.

"location": {
    "lat": "55.234734690612285",
    "lng": "33.210904112792958",
    "meta": [],
    "zoom": 10,
    "regions": [
        { "name": "Place 1" },
        { "name": "Place 2" },
        { "name": "Place 3"}
    ]
},

Как создать запрос, который находит все записи с именами регионов и т. Д. c. Место 2?

Я использую symfony doctrine конструктор запросов.

Но в прошлой записи базы данных это выглядело так:

"location": {
    "lat": "55.234734690612285",
    "lng": "33.210904112792958",
    "meta": [],
    "zoom": 10,
    "regions": "Place 1"
},

И я нахожу все записи вот так:

public function findEntitysByLocation(string $region)
{
    $qb = $this->createQueryBuilder('e')
        ->andWhere("JSON_CONTAINS(e.location, :regions, '$.regions')  = 1");

    $query = $qb->getQuery();

    return $query->execute(array(
        'regions' => '"'.$region.'"'
    ));
}

И это решение отлично работает. Но теперь у меня должно быть несколько элементов в поле региона.

Я могу использовать запрос RAW, если нет решения Doctrine Query Builder.

Tnx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...