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"会产生与 for 相同的结果"B,A",但事实并非如此。我希望有一种方法可以记录或echo对结果进行某种表示$criteria。我感觉这和我使用的方式有关mergeWith

请让我知道我哪里出错了。

4

1 回答 1

2

tCriteria 在循环结束时似乎为空。你没有合并任何东西。

也许您的意思是让两个 addSearchCondition 行在 tCriteria 上工作,而您让它们在条件上工作。

于 2012-05-04T03:20:00.167 回答