2

我需要在我的 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');

    }
}
4

1 回答 1

2

首先,让我们看一下 MongoDB:使用正则表达式进行搜索可以通过定义正则表达式来完成,如下所述

db.users.find({"username": /^a/})

通过定义正则表达式可以在 php 中完成相同的操作,解释如下

$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.

于 2013-04-16T07:39:09.383 回答