我在我的项目中使用FOSElasticaBundle搜索广告列表。我可以获得所有结果,但无法在“asc”或“desc”中订购。我看过有关过滤的其他教程。但这不起作用。

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();

我无法找到问题所在!

最佳答案

您在代码中犯了一个错误(解析错误+ JSON语法的错误构造):

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

关于php - 无法在FOSElasticaBundle中排序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30031489/

10-12 04:01