2012-05-18 34 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陈述。

相关问题