0

SO私はうまく動作する次の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();

メソッド 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 に答える