dan*_*ech 6 php sql doctrine symfony doctrine-orm
嘿,我正在撰写这篇文章,因为我在教条查询中传递数组值的问题很少.
以下是整个查询:
$data = $request->request->all();
$dql = "SELECT a FROM PfBlogBundle:Article a WHERE a.title LIKE '{$data['search']}' ORDER by a.id DESC";
Run Code Online (Sandbox Code Playgroud)
如果我print_r($ data)我得到了值,所以它在某处.我只是不明白为什么它没有传递查询..期待LIKE'{$ data ['search']}'工作,但事实并非如此.
Eli*_*gem 19
从你的代码片段我可以看出,你正在寻找这样的东西:
$entityManager->getRepository('PfBlogBundle:Article')
->findBy(
array(
'key' => 'value'
)
);
Run Code Online (Sandbox Code Playgroud)
其中key是属性/字段,值是要查找的值.查看Symfony手册页.你所追求的是从数据库中获取对象.
要like在where子句中使用a ,请参阅此SO问题,了解如何使用setParameter.你会得到你的查询:
$repo = $entityManager->getRepository('PfBlogBundle:Article');
$query = $repo->createQueryBuilder('a')
->where('a.title LIKE :title')
->setParameter('title', '%'.$data['search'].'%')
->getQuery();
Run Code Online (Sandbox Code Playgroud)
当然,添加通配符可满足您的需求.我把这个$data['search']值包含在两个%通配符中,这很慢,但是又一次:我不知道你在做什么.可能你所追求的只是不区分大小写的本质LIKE,在这种情况下%可以将所有这些都排除在一起......
基于您之前的问题(顺便说一下:考虑偶尔接受一个答案):
public function searchAction(Request $request)
{
$data = $request->get->all();
$repo = $this->getDoctrine()
->getRepository('PfBlogBundle:Article');
$query = $repo->createQueryBuilder('a')
->where('a.title LIKE :title')
->setParameter('title', '%'.$data['search'].'%')
->getQuery();
$paginator = $this->get('knp_paginator');
$pagination = $paginator->paginate(
$query->getResults(),//get the results here
$this->requrest->get('page',1),
4
);
return $this->render('PfBlogBundle:Default:blog.html.twig', array('pagination'=>$pagination));
}
Run Code Online (Sandbox Code Playgroud)
但这只是一个粗略的修复,谷歌学说 - symfony分页,关于此事有很多详细的博客文章