首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在PagerFanta和动态查询生成器中使用elastica

在PagerFanta和动态查询生成器中使用elastica
EN

Stack Overflow用户
提问于 2015-02-20 17:38:03
回答 1查看 2.3K关注 0票数 0

我有一个symfony2 / doctrine 2/ elastica / fosElasticaBundle / pagerFanta的应用程序。

我想使用一个自定义和动态的queryBuilder与页面幻想和elastica相结合。不是要转换结果,而是要预先过滤结果。

到目前为止,我已经能够: 1.在我的自定义queryBuilder中单独使用页面幻想:

代码语言:javascript
复制
    $page = $request->get('page', 1);
    $search = $request->get('search');
    $querybuilder = $this->getDoctrine()->getRepository('AppBundle:FoodAnalytics\Recipe')->findByTopCategoryQueryBuilder($category);
    $explorerManager = $this->get('explorer_manager');
    $pagerFanta = $explorerManager->getPagerFanta($querybuilder, $page, 4);
    $recipes = $pagerFanta->getCurrentPageResults();
  1. 将Elastica与Pagerfanta一起使用,但不使用我的自定义QueryBuilder: $page =$$page->get(‘页面’,1);$search = $request->get('search');$finder = $finder->findPaginated($search);$recipes = $pagerFanta->getCurrentPageResults();

现在,我如何也使用我的自定义QueryBuilder?我知道您可以在elastica config中设置一个自定义的配置,但是我的配置必须是动态的=带一个参数,所以我想在控制器中设置它。这有可能吗?

EN

回答 1

Stack Overflow用户

发布于 2015-02-20 18:52:15

您可以使用findPaginated方法:

代码语言:javascript
复制
$query = new \Elastica\Query::create(new \Elastica\Query\Term(array(
    'name' => $request->get('search')
));
$finder = $this->container->get('fos_elastica.finder.website.recipe');
$pagerFanta = $finder->findPaginated($query);
$recipes = $pagerFanta->getCurrentPageResults();

也许代码更清晰,当您只使用没有PagerFanta与ElasticaAdapter的FOSElasticaBundle时,您可以看到它是如何工作的:

代码语言:javascript
复制
// Searchable can be any valid searchable Elastica object. For example a Type or Index
$finder = new \Elastica\Index($elasticaClient, 'website.recipe');
// A Query can be any valid Elastica query (json, array, Query object)
$query = new \Elastica\Query::create(new \Elastica\Query\Term(array(
    'name' => $request->get('search')
));

$elasticaAdapter = new \Pagerfanta\Adapter\ElasticaAdapter($finder, $query);
$paginator = new \Pagerfanta\Pagerfanta($elasticaAdapter);
$results = $paginator
                ->setMaxPerPage($limit)
                ->setCurrentPage($page)
                ->getCurrentPageResults();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28634983

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档