Как установить несколько параметров для одного и того же ключа в Doctrine Query

Я настраиваю расширенный поиск доски объявлений и мне нужно найти резюме по контракту, зная, что в резюме может быть несколько контрактов.

У меня есть форма, в которой вы можете выбрать, какой тип контракта вы ищете (это ChoiceType::class с несколькими => true)

В моем репозитории:

public function findByContract(array $contract)
{
    return $this->createQueryBuilder('r')
        ->andWhere('r.contract = :con')
        ->setParameter('con', array($contract))
        ->getQuery()
        ->getResult()
    ;
}

В моем контроллере:

public function index(Request $request, ResumeRepository $resumeRepository)
{
    $formSearch = $this->createForm(ResumeSearchFormType::class);
    $formSearch->handleRequest($request);

    if ($formSearch->isSubmitted() && $formSearch->isValid()) {
        $data = $formSearch->getData();

        $r = $resumeRepository->findByContract($data->getContract());
        var_dump($r); die;

Этот var_dump() возвращает пустой массив.

Я не знаю, как установить несколько параметров для одного и того же ключа

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
302
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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

Используйте IN состояние:

public function findByContract(array $contract)
{
    return $this->createQueryBuilder('r')
        ->andWhere('r.contract IN (:contracts)')
        ->setParameter('contracts', $contract)
        ->getQuery()
        ->getResult()
    ;
}

Привет ! Спасибо за ответ, теперь у меня установлено несколько параметров! Но мой var_dump() все равно возвращает пустой массив. Ты знаешь почему ?

BanjoSf4 19.06.2019 12:29

Можешь опубликовать var_dump($contract) результат?

marv255 19.06.2019 12:39

массив (размер=2) 0 => строка 'CDI' (длина=3) 1 => строка 'CDD' (длина=3)

BanjoSf4 19.06.2019 12:43

Хорошо, если r.contract == CDD or r.contract == CDI вы получите предметы. Если нет, вы можете проверить строку запроса в Symfony Profiler.

marv255 19.06.2019 14:02

В моем резюме таблицы в phpMyAdmin контракт столбца выглядит так:

И в профилировщике исполняемый запрос:

SELECT r0_.id AS id_0, r0_.city AS city_1, r0_.postal_code AS postal_code_2, r0_.salary AS salary_3, r0_.contract AS contract_4, r0_.experience AS experience_5, r0_.training AS training_6, r0_.motivations AS motivations_7, r0_.ext AS ext_8, r0_.name AS name_9 FROM resume r0_ WHERE r0_.contract IN ('CDI', 'CDD');

Итак, есть много резюме, где r.contract == CDD или r.contract == CDI, но запрос все равно возвращает пустой массив

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