2016-08-31 5 views
0

同じデータベースフィールドに表示されるいくつかのキーワードを検索する必要があります。たとえば、フィールドに「茶色のキツネが怠惰な犬の上を飛ぶ」という文字が含まれていて、誰かが「クイック」と「犬」を検索した場合、これは一致として返されます。Yii2の同じフィールドにある複数のキーワードを検索

ので、私は検索フィールドを取るとスペースに基づいて、配列にそれを爆発:その後、私は私がループにこれを投げるだろうと思って

$terms = explode(" ", $this->search_term);

foreach ($terms as $key) { 
    $query->andFilterWhere([ 
     'or', 
     [ 'like', 'item.name', $key ], 
    ]); 
} 

しかし、このそれは非常にエレガントではありません。

答えて

3

条件パラメータを適切に作成するだけです。 :

$condition = ['or']; 
foreach ($terms as $key) { 
    $condition[] = ['like', 'item.name', $key]; 
} 
$query->andWhere($condition); 
1

私は条件を使用して条件に参加しなければならないと思います。

foreach ($terms as $key) { 
    $query->orFilterWhere([ 
     'or', 
     [ 'like', 'item.name', $key ], 
    ]); 
} 

これは別の条件を追加する方法です。詳細はhereを参照してください。 forループを実行しないとこれを行う方法は他にありません。

関連する問題