2017-01-31 5 views
0

これはdoctrine ORM symfonyで可能かどうかを知りたいと思います。 私は製品のリストを持っています。各製品にはタイトルがあります。doctrine ORMで単語を検索するには?

1. Great Mango 
2. Show Mango 
3. King Mango 

私はタイトルに

$repository->findByTitle("Mango"); 

を見つけるために、この教義を使用しますが、私は何も表示しない: は、そのタイトルがあるとしましょう。私が "キングマンゴー"のようにそれを検索するタイトルを完了した場合。 MANGOの単語は表示されますが、リストは表示されません。

これは参考としてlinkです。しかし、あなたがこれについてのより多くのドキュメンテーションを持っていれば。私はそれから学ぶのがうれしいです。

答えて

2

マジックメソッドは正確な検索でのみ機能します。

public function findByTitlePart($title) 
{ 
    return $this->getEntityManager() 
     ->createQuery(
      'SELECT p FROM AppBundle:Product p WHERE p.title LIKE :title' 
     ) 
     ->setParameter('title', '%' . $title . '%') 
     ->getResult(); 
} 
+0

ありがとう!私は今のような力を見ます – user3818576

3

:あなたがあなた自身のリポジトリのクラスを持っていたらhttp://symfony.com/doc/current/doctrine/repository.html

は、クエリでLIKEを使用する方法を作成します。ここで説明するようLIKEステートメントを使用するには、独自のリポジトリを作成する必要がありますwhere句にlikeを使用するには、setParameterwhereの条件を使用する必要があります。 次のようにクエリ:

$title = 'Mango'; 
$query = $repository->createQueryBuilder('a') 
      ->where('a.title LIKE :title') 
      ->setParameter('title', '%'.$title.'%') 
      ->getQuery(); 
関連する問題