2

同じ文字列で複数のエンティティを検索し、結果を並べ替える必要があります。

FOSElasticaBundleについて少し聞いたり読んだりしたことがありますが、このバンドルはそれを行うことができますか? (私には)この目的のためにほとんど多くの機能があるように見えますが、共有サーバー(hostgator)で実行できるかどうかはわかりません。

現時点で考えられるもう1つの解決策は、「手動で」検索を行うことです(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 に答える