2013-04-16 32 views
1

我需要搜索的用户在我的Symfony2应用如何查询的MongoDB与条件“如”在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'); 

    } 
} 

回答

2

首先,让我们来看看MongoDB的:用正则表达式搜索可以通过定义一个正则表达式来完成,如解释here

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

同样可以做在定义一个正则表达式PHP解释here

$collection->find(array('name'=> array('$regex' => '^a')); 

您可以使用学说的MongoDB ODM几乎完全一样的正则表达式的语法:

$user = $this->get('doctrine.odm.mongodb.document_manager') 
     ->getRepository('WishbotWebBundle:User') 
     ->findByUsername(array('$regex' => $fname)); 

请注意,返回的文档的集合,甚至如果只找到一个。上面的正则表达式还匹配用户名中包含$fname字符串的所有文档。

如果您想要以$fname开头的用户名,您需要使用'^' . $fname