Как сделать поисковый запрос для Max и Min в Symfony4?

У меня есть два поля для поиска, то есть минимальное и максимальное.

Здесь я хочу отобразить все продукты, которые находятся между минимальным и максимальным.

Помоги мне, я новичок в Symfony.

1 ответ

Решение

Есть два варианта:

  1. Просто.

    • создать обычную HTML-форму в шаблоне (что вы уже сделали):
<form>
    <input name="min" value="{{ min }}">
    <input name="max" value="{{ max }}">
    <input type="submit" value="Search">
</form>
  • в вашем контроллере:
public function listPhones(Request $request, EntityManagerInterface $em) 
{
    // get submitted values
    $min = $request->get('min');
    $min = $request->get('min');

    $phones = $em->getRepository(Phone::class)->search($min, $max);

    return ['phones' => $phones, 'min' => $min, 'max' => $max]
}
  • в вашем хранилище сущностей:
class PhoneRepository extends EntityRepository 
{
    public function search($min = null, $max = null) 
    {
        $qb = $this->createQueryBuilder('p');
        if (!is_null($min)) {
            $qb->andWhere('p.price >= :min')
               ->setParameter('min', $min);
        }
        if (!is_null($max)) {
            $qb->andWhere('p.price <= :max')
               ->setParameter('max', $max);
        }

        return $qb->getQuery()->getResult();
    }
}
  1. Способ Symfony, используя Symfony Forms. Это более сложный способ, я объясню по требованию.
Другие вопросы по тегам