2013-06-12 30 views
1

程序員,我使用symfony教義和mongodb。今天,我試圖創建下面的查詢:

$q = $this->createQueryBuilder("user"); 
$keywords = explode("_", $keyword); 
foreach ($keywords as $keyword) { 
    $r = new \MongoRegex('/'.$keyword.'/i'); 
    $q->addAnd(
    $q->addOr($q->expr()->field('firstName')->equals($r)) 
     ->addOr($q->expr()->field('lastName')->equals($r)) 
    ); 
} 
return $q->getQuery()->execute(); 

但執行後()我得到以下錯誤「零長度的密鑰是不允許的,您使用了$用雙引號」。查詢必須通過關鍵字實現用戶搜索。你能幫我解決這個問題嗎?

回答

1

如果有人感興趣,我找到的解決方案,通過使用獨立「或」表達式:

$q = $this->createQueryBuilder(); 
    $keywords = explode(" ", $keyword); 
    foreach ($keywords as $keyword) { 
     $r = new \MongoRegex('/'.$keyword.'/i'); 
     $q->addOr($q->expr()->field('firstName')->equals($r)); 
     $q->addOr($q->expr()->field('lastName')->equals($r)); 
    } 
    return $q->getQuery()->execute(); 

希望我的經驗將幫助