Symfony - доктрина createQueryBuilder от json_array - PullRequest
0 голосов
/ 13 мая 2019

Создайте пользовательский запрос в 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.

1 Ответ

2 голосов
/ 13 мая 2019

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

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