【问题标题】:How to set multiple parameters for the same key in Doctrine Query如何在 Doctrine Query 中为同一个键设置多个参数
【发布时间】:2019-06-19 10:09:58
【问题描述】:

我正在为工作板设置高级搜索,我需要按合同查找简历,因为我知道一份简历可以有多个合同。

我有一个表格,您可以在其中选择您正在寻找的合同类型(这是一个 ChoiceType::class with multiple => 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() 返回一个空数组。

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

【问题讨论】:

    标签: php symfony4 doctrine-query


    【解决方案1】:

    使用IN condition:

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

    【讨论】:

    • 嗨!感谢您的回答,现在我设置了几个参数!但是我的 var_dump() 仍然返回一个空数组。你知道为什么吗?
    • 你能发布var_dump($contract)结果吗?
    • 数组(大小=2)0 => 字符串'CDI'(长度=3)1 => 字符串'CDD'(长度=3)
    • 好的,如果r.contract == CDD or r.contract == CDI你会得到一个项目。如果没有,你可以在 symfony profiler 中检查查询字符串。
    【解决方案2】:

    在我的 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 == CDDr.contract == CDI,但是查询仍然返回一个空数组

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-24
      • 1970-01-01
      • 2010-11-17
      • 2018-07-28
      • 1970-01-01
      • 2013-03-23
      • 2019-04-30
      • 1970-01-01
      相关资源
      最近更新 更多