我已经创建了一个搜索表单,我正在尝试从数据库中获取以下数据(airportairport1departuredatepriceairport),我只能获取[],而不能获取其他实体。
这是我的控制器:

public function searchtabflightResultAction(Request $request)
{


    $form = $this->createForm(new SearchflightType());

    if ($this->get('request')->getMethod() == 'POST')
    {
        $form->handleRequest($request);

    $em = $this->getDoctrine()->getManager();
    $entities = $em->getRepository('FLYBookingsBundle:Post')->searchflight($form['airport']->getData());

    } else {
        throw $this->createNotFoundException('The page you were looking for doesn\'t exist.');
    }

    return $this->render('FLYBookingsBundle:Post:searchtabflightResult.html.twig', array('entities' => $entities));
}

PostRepository.php文件
public function searchflight($entity)
    {
        $qb = $this->createQueryBuilder('u')
            ->select('u')
            ->where('u.airport like :entity')
            ->andWhere('u.airport1 like :entity')
            ->orderBy('u.id')
            ->setParameter('entity', '%'.$entity.'%');
        return $qb->getQuery()->getResult();
    }

最佳答案

尝试以下方法:
在控制器中:

$entities = $em->getRepository('FLYBookingsBundle:Post')->searchflight($form);

在你的回购协议中:
public function searchflight(FormInterface $form)
{
    $qb = $this->createQueryBuilder('u');

    if ($form->has('airport')) {
        $qb->andWhere(
            $qb->expr()->like('u.airport', ':airport')
        )
           ->setParameter('airport', '%'. $form->get('airport')->getData().'%')
    }

    // ... complete like this with the other params

10-05 19:28