我正在尝试制作一个搜索表单...一切正常,但是现在只有搜索特定对象时搜索才有效,并且字母必须与产品名称相同。
表格:
$form = $this->createFormBuilder()
// ->setAction($this->generateUrl('search'))
->add('search', 'text', array(
'attr' => array(
'placeholder' => 'Search for products',
),
'label' => false))
->add('submit', 'submit')
->getForm();
if ('POST' === $request->getMethod())
{
$form->handleRequest($request);
$data = $form->get('search')->getData();
return $this->redirect($this->generateUrl('searching', array('data' => $data)));
}
我如何找到产品:
$products = $em->getRepository('MpShopBundle:Product')->findProductsBySearch($data);
public function findProductsBySearch($data)
{
$qb = $this->createQueryBuilder('a');
$qb->where('a.model=:model');
$qb->SetParameter('model', $data);
return $qb->getQuery()->getResult();
}
如果我搜索示例Test1 - 找到了产品。但如果我写测试 - 没有找到产品。
我想要实现的是找到所有在表单中给出字符串的产品。
例如,如果我有3个产品:Test1,Test2,Test3 ......如果我输入Test并提交,我应该找到所有这些产品...而且无论是leters是小写还是大写..如何我能用PHP和Symfony做到吗?
答案 0 :(得分:1)
您可以使用:
$qb->where('a.model LIKE :model')
->setParameter('model', '%'.$model.'%');
它会为您提供包含$model
的所有内容。如果您只希望结果以model
开头,则可以删除第一个%。
希望这有帮助。