我需要在我的symfony2应用中搜索用户
如果用户在搜索框中输入字母并提交,那么他需要让用户以该字母开头。
如何实现这一目标? 下面的代码将获得我们在文本框中输入的确切用户。
如何申请"喜欢"在此
中查询我的行动代码
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'); } }
答案 0 :(得分:2)
首先,让我们看看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
。