Symfony — доктрина createQueryBuilder из json_array

Создаю пользовательский запрос в Symfony 4, и я использую createQueryBuilder(). У моей сущности есть столбец price_ranges type type = "json_array"

Эти данные я храню в этом столбце

{
    "from": "10.10.2010", 
    "to": "10.20.2010", 
    "pricePerNight": 100,
    "minStay": 7
}

Хотите запросить данные с помощью клавиши pricePerNight в столбце price_ranges.

Я создаю функцию, но у меня есть следующая ошибка:

[Semantical Error] line 0, col 41 near 'price_ranges': Error: Class App\Entity\House has no field or association named price_ranges

Вот моя функция. Где я не прав?

public function findDataByPriceRange()
    {
        $qb = $this->createQueryBuilder('u');
        $qb->select('u')
            ->where('u.price_ranges LIKE :price_ranges')
            ->setParameter('pricePerNight', 100);
        return $qb->getQuery()->getResult();
    }

После того, как я отредактирую свою функцию:

public function findVillasByPriceRange()
{
    $qb = $this->createQueryBuilder('u');
    $qb->select('u')
        ->where('u.priceRanges LIKE :priceRanges')
        ->setParameter('pricePerNight', 100);
    return $qb->getQuery()->getResult();
}

Я получаю эту ошибку:

Invalid parameter: token pricePerNight is not defined in the query.
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Symfony Station Communiqué - 17 февраля 2023 г
Symfony Station Communiqué - 17 февраля 2023 г
Это коммюнике первоначально появилось на Symfony Station , вашем источнике передовых новостей Symfony, PHP и кибербезопасности.
Управление ответами api для исключений на Symfony с помощью KernelEvents
Управление ответами api для исключений на Symfony с помощью KernelEvents
Много раз при создании api нам нужно возвращать клиентам разные ответы в зависимости от возникшего исключения.
1
0
374
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вам нужно использовать одно и то же имя параметра в where() и setParameter() вот так

->where('u.priceRanges LIKE :parameterName')
->setParameter('parameterName', 100);

Другие вопросы по теме