2012-05-18 75 views
0

我是一位初學PHP的中級開發人員,並開始使用MongoDB。我想創建一個查詢類,它根據傳入方法的參數構建查詢。我希望這是可能的,我只是缺少一些基本的PHP技術。PHP - 我可以使用表單構建動態Mongo查詢嗎?

我開始用一個靜態的查找功能:

$dateRange = $this->collection->find(array(

     'timeStamp' => array(
      '$gt' => $startTime, 
      '$lt' => $endTime 
     ), 
     'userAgent' => array(
      '$ne' => 'ELB-HealthChecker/1.0' 
     ) 

)); 

我希望能夠基於這些是否一個時間範圍,的userAgent,尿急水平等傳遞到方法,然後生成查詢論據存在。我試過這樣的:

if($startTime && $endTime){ 
$filter = " 

    'timeStamp' => array(
       '$gt' => $start, 
       '$lt' => $end 
      )"; 
} 

if($userAgent){ 
$filter .= ", 
     'userAgent' => array(
      '$ne' => 'ELB-HealthChecker/1.0' 
     )"; 

$dateRange = $this->collection->find(array($filter); 

沒有工作。那麼,我做錯了什麼?

回答

2

看起來你正在嘗試使用一個字符串,你應該只使用一個數組。

$qry = array(); 

if(isset($startTime) && isset($endTime)) { 
    // Add the timestamp array 
    $qry['timestamp'] = array('$gt' => $startTime, '$lt' => $endTime); 
} 

if(isset($userAgent)) { 
    // add the userAgent 
    $qry['userAgent'] = array('$ne' => 'ELB-HealthChecker/1.0'); 
} 

$dateRange = $this->collection->find($qry); 
+0

哇,粗糙的早晨。感謝那。 –

0

你試過if(isset($startTime) && isset($endTime))?似乎你也可能需要一些else陳述。