Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Yii在逗号分隔的查询字符串中搜索每个术语,但未按预期工作_Php_Activerecord_Yii - Fatal编程技术网

Php Yii在逗号分隔的查询字符串中搜索每个术语,但未按预期工作

Php Yii在逗号分隔的查询字符串中搜索每个术语,但未按预期工作,php,activerecord,yii,Php,Activerecord,Yii,我希望通过在一个以逗号分隔的查询字符串中搜索每个术语来完成对模型的搜索。例如,如果字符串是“matza,red wine”,那么我想搜索与“matza”和“red%20wine”匹配的项目。这是我正在使用的代码: $qString = $_GET['q']; $criteria = new CDbCriteria(); $queryTerms = explode(',', $qString); foreach ($queryTerms

我希望通过在一个以逗号分隔的查询字符串中搜索每个术语来完成对模型的搜索。例如,如果字符串是
“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
的方式有关


请告诉我哪里出了问题。

t循环结束时,标准似乎是空的。你没有合并任何东西


也许你是想让两行addSearchCondition在tCriteria上运行,而你却让它们在criteria上运行。

令人尴尬。我猜这就是当你使用看起来太像的糟糕变量名时得到的结果。