あなたのスニペットからわかることから、あなたは次のようなものを探しています:
$entityManager->getRepository('PfBlogBundle:Article')
->findBy(
array(
'key' => 'value'
)
);
key はプロパティ/フィールドで、value は検索する値です。Symfony のマニュアルページを確認してください。あなたが求めているのは、データベースからオブジェクトをフェッチすることです。where 句で
a を使用するには、使用方法に関するこの SO の質問を参照してください。これでクエリを取得します:like
setParameter
$repo = $entityManager->getRepository('PfBlogBundle:Article');
$query = $repo->createQueryBuilder('a')
->where('a.title LIKE :title')
->setParameter('title', '%'.$data['search'].'%')
->getQuery();
もちろん、必要に応じてワイルドカードを追加してください。$data['search']
値を 2 つのワイルドカードで囲みました%
が、これは遅いですが、繰り返しになりますが、実際に何をしているのかわかりません。大文字と小文字を区別しない の性質だけを求めているのかもしれません。そのLIKE
場合、%
は一緒に省略できます...
以前の質問に基づいて (ところで: たまに回答を受け入れることを検討してください):
public function searchAction(Request $request)
{
$data = $request->get->all();
$repo = $this->getDoctrine()
->getRepository('PfBlogBundle:Article');
$query = $repo->createQueryBuilder('a')
->where('a.title LIKE :title')
->setParameter('title', '%'.$data['search'].'%')
->getQuery();
$paginator = $this->get('knp_paginator');
$pagination = $paginator->paginate(
$query->getResults(),//get the results here
$this->requrest->get('page',1),
4
);
return $this->render('PfBlogBundle:Default:blog.html.twig', array('pagination'=>$pagination));
}
しかし、これは大雑把な修正であり、Google doctrine-symfony paginationです。この問題については、多くの詳細なブログ投稿があります。