我想通过在用逗号分隔的查询字符串中搜索每个术语来完成搜索我的模型。例如,如果字符串为"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
的方式有关。
请让我知道我哪里出错。
答案 0 :(得分:2)
tCriteria在循环结束时似乎是空的。你没有合并任何东西。
也许你的意思是让两个addSearchCondition行在tCriteria上运行,而你让它们处理标准。