2

我需要对具有相同字符串的多个实体进行搜索,然后对结果进行排序。

我听说过/读过一些关于FOSElasticaBundle的信息,这个捆绑包能做到吗?似乎(对我来说)为此目的几乎有很多功能,我不确定它是否可以在共享服务器(hostgator)上运行。

我目前能想到的另一种解决方案是“手动”进行搜索(通过使用joinand union),但我想知道我应该在哪里放置这样的功能:在现有控制器、新控制器、新包或其他地方? 我也担心这种手动解决方案可能会产生成本,尤其是在某些不可索引的字段上。

4

1 回答 1

0

你会做自定义实体存储库。查看文档。基本上这扩展了默认的 FindAll、FindOneBy 等。

你会有这样的功能:

class MyEntityRepository extends Doctrine\ORM\EntityRepository {
    public function findByCustomRule(){
        //this is mapped to your entity (automatically adds the select)
        $queryBuilder = $this->createQueryBuilder('someAlias');  
        $queryBuilder->orderBy('...');

        //this is mapped to any entity
        $queryBuilder = $this->getEntityManager()->createQueryBuilder();
        $queryBuilder->select('...');


        //result
        $result = $queryBuilder->getQuery()->getResult();

    }
}

此类在教义映射中定义并位于 Entity 文件夹中。查看文档,您应该有一个基本的想法。

于 2014-01-14T03:57:33.633 回答