0

コンマで区切られたクエリ文字列内の各用語を検索して、モデルの検索を実行したいと考えています。たとえば、文字列が の場合、と"matza,red wine"に一致するアイテムを検索します。これは私が使用しているコードです:"matza""red%20wine"

       $qString = $_GET['q'];

       $criteria = new CDbCriteria();

       $queryTerms = explode(',', $qString);

       foreach ($queryTerms as $q) {

              $tCriteria = new CDbCriteria();

              $criteria->addSearchCondition('name', $q, true);
              $criteria->addSearchCondition('text_ingredients', $q, true, 'OR');

              $criteria->mergeWith($tCriteria);
       }

       $results = FoodItem::model()->findAll($criteria);

そして、すべて実行されますが、結果は正しくありません。たとえば、 を検索すると を検索した"A,B"場合と同じ結果になると思います"B,A"が、そうではありません。echo結果のログまたは何らかの表現を記録する方法があればいいのにと思います$criteria。それは私の使い方と関係があると感じていますmergeWith

どこが間違っているのか教えてください。

4

1 に答える 1

2

ループの最後で tCriteria が空のようです。あなたは何もマージしていません。

おそらく、2 つの addSearchCondition 行を tCriteria で機能させるつもりだったのに、基準で機能させようとしていたのかもしれません。

于 2012-05-04T03:20:00.167 に答える