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上运行。令人尴尬。我猜这就是当你使用看起来太像的糟糕变量名时得到的结果。