我想通过在以逗号分隔的查询字符串中搜索每个术语来完成对模型的搜索。例如,如果字符串是,"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
。
请让我知道我哪里出错了。