如何在Doctrine查询中为同一键设置多个参数

时间:2019-06-19 10:09:58

标签: php symfony4 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()返回一个空数组。

我不知道如何为同一个键设置多个参数

2 个答案:

答案 0 :(得分:1)

使用IN condition

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

答案 1 :(得分:0)

在我的表中,在phpMyAdmin中的履历表看起来像这样:

enter image description here

在分析器中,可运行的查询为:

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 == CDDr.contract == CDI处有很多简历,但查询仍然返回空数组