2017-09-18 13 views
1

symfonyで動作するフィルタをプロジェクトに追加しました。Symfonyでの複数のフィルタリング

私はID(検索する番号)とクライアント名を持っています。私はちょうどその

public function findFilter($filter) 
    { 
     return $this->createQueryBuilder("a") 
      ->andWhere('a.id like :id') 
      ->setParameter('id', '%' . $filter . '%') 
      ->getQuery() 
      ; 
    } 

のように、それは動作しますが、一つのパラメータで、私のクエリを構築し、私は1つの以上のパラメータを追加するとき、検索が起こらない 。

public function findFilter($filter) 
    { 
     return $this->createQueryBuilder("a") 
      ->andWhere('a.id like :id') 
      ->setParameter('id', '%' . $filter . '%') 
      ->andWhere('a.client like :client') 
      ->setParameter('client', '%' . $filter . '%') 
      ->getQuery() 
      ; 
    } 

、ここでフィルタだから多分私は右のそれを貼り付けるいないよ?

<form action="" method="get"> 
     <input name="filter" type="text"> 
     <button type="submit" class="btn btn-default">Filtrer</button> 
</form> 

を入力することができます私の見解でありますか フィルタバーにパラメータを追加する方法を知りましたか?あなたはユニークな値を持つ複数の列にフィルタリングする場合は、あなたがORフィルタのアレイを使用するようにしました

return $this->createQueryBuilder("a") 
     ->andWhere('a.id like :id' OR 'a.client like :client') 
     ->setParameters([ 
      'id' => '%' . $filter . '%', 
      'client' => '%' . $filter . '%' 
     ]), 
     ->getQuery(); 

答えて

3

+0

回答ありがとうございました –

3

はこれを試してみてください。

use Doctrine\ORM\Query\Expr; 

[...] 

$orX = new Expr\Orx(); 
$orX->add($qb->expr()->orx($qb->expr()->like('a.id', ':filter')); 
$orX->add($qb->expr()->orx($qb->expr()->like('a.client', ':filter')); 

$qb 
    ->andWhere($orx) 
    ->setParameter('filter', '%'.$filter.'%') 
; 
+0

ありがとうをさらに代わりandWhere

public function findFilter($filter) { return $this->createQueryBuilder("a") ->where('a.id like :filter') ->orWhere('a.client like :filter') ->setParameter('filter', '%' . $filter . '%') ->getQuery() ; } 

orWhereを使用する必要がありますその答えは私が問題を解決した表現で見つけました。 –

2

あなたが見逃している可能性がありますgetResultgetQuery後(しかし、それはタイプミスか何か他のものであるかどうかを知りません)

+0

回答ありがとうございますが、質問表式 –

+0

@chickenburgerでより良い結果が見つかりました。私はちょうどこれを読む人のためにこれをコメントしたかったのですが、この答えと受け入れられたものとの間には絶対的な差はないということです。どちらも動作します。受け入れられたものは読みにくいですが、大丈夫です。両方が許容可能であることを指摘したいだけでした。) – DonCallisto

関連する問題