因此,我正在为网站使用一种小型搜索工具,但是遇到一个小问题,当我输入一个单词并且如果出现该单词将返回结果,但是当我搜索该单词并添加一个多余的字符将不会返回任何结果。
当我搜索“工具”一词时,它将返回结果,因为该词出现在数据库中,但是当我搜索“工具”时,它将不返回任何内容,因为工具未在数据库中出现。 / p>
当我搜索“工具”一词时,它还应该返回与“工具”相匹配的所有结果
$query->andFilterWhere([
'or',
['like', 'product.name', $this->searchValue],
['like', 'product.desc', $this->searchValue],
]);
答案 0 :(得分:0)
您可以通过singularize
变形器运行搜索字符串。
$value = yii\helpers\Inflector::singularize($this->searchValue);
$query->andFilterWhere([
'or',
['like', 'product.name', $value],
['like', 'product.desc', $value],
]);
显然,这仅适用于单个单词的复数形式。
爱德。
答案 1 :(得分:0)
您可以使用以下查询进行搜索:
$query->andFilterWhere(
"product.name LIKE CONCAT('%',$this->searchValue,'%') OR
product.desc LIKE CONCAT('%',$this->searchValue,'%')"
);
答案 2 :(得分:0)
尝试一下
$query->orFilterWhere(['like', 'product.name', $this->searchValue]);
$query->orFilterWhere(['like', 'product.desc', $this->searchValue]);