我需要在我的 symfony2 应用程序中搜索用户
如果用户在搜索框中输入字母并提交,那么他需要让用户以该字母开头。
如何实现这一目标? 下面的代码将获取我们在文本框中输入的确切用户。
如何在此应用“like”查询
我的操作代码
public function searchAction(Request $request) { $fname = $request->query->get('fname'); if(isset($fname)){ $user = $this->get('doctrine.odm.mongodb.document_manager') ->getRepository('WishbotWebBundle:User') ->findByusername($fname); return $this->render('WishbotWebBundle:Default:search.html.twig',array('user'=>$user)); }else{ return $this->render('WishbotWebBundle:Default:search.html.twig'); } }
最佳答案
首先,让我们看看MongoDB:可以通过定义正则表达式来完成使用正则表达式的搜索,如here所述:
db.users.find({"username": /^a/})
通过定义正则表达式,可以在 php 中完成相同的操作,解释为 here :
$collection->find(array('name'=> array('$regex' => '^a'));
您可以在 Doctrine MongoDB ODM 中使用几乎完全相同的正则表达式语法:
$user = $this->get('doctrine.odm.mongodb.document_manager')
->getRepository('WishbotWebBundle:User')
->findByUsername(array('$regex' => $fname));
请注意,即使只找到一个文档,也会返回一组文档。上面的正则表达式还匹配用户名在任何地方包含 $fname
字符串的所有文档。
如果您想要以 $fname
开头的用户名,则需要使用 '^' 。 $fname
.
关于mongodb - 如何在symfony2中查询条件为 “like”的mongodb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16029684/