0

所以我有以下运行良好的 Mongo ODM 查询:

      $query = $dm->createQueryBuilder('MainClassifiedBundle:Listing')
         ->select('id', 'title', 'assets')
         ->field('somefield0')->equals($somefield)
         ->field('somefield')->equals($blah)
         ->field('somefield2')->range($minPrice, $maxPrice)
         ->field('somefield3')->near($latitude, $longitude)
         ->getQuery();

 $my_data = $query->execute();

但是,如果我尝试将其分解如下:

 $query = $dm->createQueryBuilder('MainClassifiedBundle:Listing')
     ->select('id', 'title', 'assets')
     ->field('somefield0')->equals($somefield)
     ->field('somefield')->equals($blah);

if ($propertyType != 'All') {
     $query->field('someothercrazyfield')->equals($somethingelse);

     $query->field('somefield2')->range($minPrice, $maxPrice)
     ->field('somefield3')->near($latitude, $longitude)
     ->getQuery();

 $my_data = $query->execute();

我收到一个方法执行不存在的错误。

为什么?

4

1 回答 1

2

因为调用 getQuery() 时没有存储查询。我在下面更改了您的示例。

$query = $dm->createQueryBuilder('MainClassifiedBundle:Listing')
    ->select('id', 'title', 'assets')
    ->field('somefield0')->equals($somefield)
    ->field('somefield')->equals($blah);

if ($propertyType != 'All') {
    $query->field('someothercrazyfield')->equals($somethingelse);

    $query->field('somefield2')->range($minPrice, $maxPrice)
       ->field('somefield3')->near($latitude, $longitude);
}

$my_data = $query->getQuery()->execute();
于 2012-09-18T22:20:47.730 回答