我正在对工作板进行高级搜索,我需要按合同查找简历,因为知道一份简历可以有多个合同。
我有一个表格,您可以在其中选择要寻找的合同类型(这是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()返回一个空数组。
我不知道如何为同一个键设置多个参数
答案 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中的履历表看起来像这样:
在分析器中,可运行的查询为:
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
处有很多简历,但查询仍然返回空数组