我正在使用符号4.12我正在尝试编写查询以过滤我的工作(我有工作表,一个部门),我首先尝试了经验,但我陷入了困境 这是我的offerController:
COPY conf/my-httpd.conf /usr/local/apache2/conf/httpd.conf
这是我在offerRepository中的查询:
/**
* @Route("/offres", name="offres")
* @param Request $request
* @param PaginatorInterface $paginator
* @param FormFactoryInterface $formFactory
* @return Response
*/
public function offreSearch(Request $request, PaginatorInterface $paginator ,FormFactoryInterface $formFactory):Response
{
$datas =new OffreEmploi();
$formFilter=$formFactory->create(OfferFilterForm::class,$datas);
$offres = $this->repository->findSearch($datas);
$formFilter->handleRequest($request);
return $this->render('offre/index.html.twig', [
'controller_name' => 'OffreController',
'offres' => $offres,
'formulaire' =>$formFilter->createView(),
]);
}
当输入任何数字时,IT会显示与存储在数据库中的所有作业相同的内容,但我不知道问题出在哪里。 THE RESULT
答案 0 :(得分:0)
尝试使用此解决方案:
public function findSearch(OffreEmploi $data):?array
{
$query = $this->createQueryBuilder('o');
if (!empty($data->getExperience())
// ...
}
return $query->getQuery()->getResult();
}
如果它不起作用,请尝试转储$ data-> getExperience()以查看其值
public function findSearch(OffreEmploi $data):?array
{
$query = $this->createQueryBuilder('o');
dd($data->getExperience()) ;
}
编辑
因此请尝试这样做,但请确保您使用GET方法而非POST发送表单:
public function offreSearch(Request $request, PaginatorInterface $paginator)
{
$em = $this->getDoctrine()->getManager();
$form = $this->createForm(OfferFilterForm::class);
$form->handleRequest($request);
$data = $request->query->all();
$qb = $em->getRepository(OffreEmploi::class)->findSearch($data);
$offres = $paginator->paginate($qb, $request->query->get('page', 1), 20);
return $this->render('offre/index.html.twig', array(
'formulaire' =>$form->createView(),
'offres' => $offres,
));
}
在formType中:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('experience', IntegerType::class);
//.....
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => null,
'csrf_protection' => false,
));
}
public function getBlockPrefix()
{
return null;
}
以及在存储库中:
public function findSearch($data)
{
$query = $this->createQueryBuilder('o');
if (!empty($data['experience'])) {
$query
->where('o.experience > :experience')
->setParameter('experience', $data['experience']);
}
return $query->getQuery()->getResult();
}
答案 1 :(得分:0)
我想我找到了答案,但是我只是创建了另一个包含该表单所有字段的类,这就是我不知道它是如何工作的,因为我没有为此而改变重要的事情来为您提供帮助。