2015-05-04 28 views
1

我在我的項目中使用FOSElasticaBundle來搜索廣告列表。我可以得到所有的結果,但我不能在「asc」或「desc」中排序。我看過不同的教程講過濾。但它不起作用。無法在FOSElasticaBundle中排序

if (!empty($cati)) { 
    $query = new \Elastica\Query\Bool(); 

    if((!empty($cati)) && $cati!='1') 
    { 
     $query1 = new \Elastica\Query\Match(); 
     $query1->setFieldQuery('post.cat_id', $cati); 
     $query->addMust($query1); 
    } 
} 
else { 
    $query = new \Elastica\Query\MatchAll(); 
} 

$elasticaQuery = new \Elastica\Query(); 
$elasticaQuery->setQuery($query); 
$elasticaQuery->setSize($nbPerPage); 
$elasticaQuery->setFrom(($page - 1) * $nbPerPage); 
$elasticaQuery->addSort(array('date', array("desc")); 

$repistoryManager = $this->container->get('fos_elastica.manager'); 
$repistory = $repistoryManager->getRepository('AdsManagerBundle:Post'); 

$eq = new \Elastica\Query(); 
$eq->setQuery($query); 
$finder = $this->container->get('fos_elastica.index.ads.post'); 
$elasticaResultSet = $finder->search($eq); 
$ed = $elasticaResultSet->getResults(); 

我找不到問題所在!

回答

1

你做了一個錯誤在你的代碼(語法錯誤+ JSON的語法不好的建設):

$elasticaQuery->addSort(array('date' => 'desc')); 
+0

我已經嘗試過了。它在'asc'中工作。但是,不在'desc'中。我不知道爲什麼。 –