如何解决Yii2-是否可以在搜索模型中编写基本字符,并且结果显示所有具有基本字符和特殊字符的查询?
首先要说的是,我在Yii2中相对较新,所以感谢您的理解。
我正在使用MariaDB数据库引擎。
例如,在queryParams中,我写了'bosiljcic',由于我在db中没有'bosiljcic',因此我在API中得到了空字符串作为响应。 我在数据库中拥有的是“Bosiljčić”。我如何编写查询以列出所有被记录下来的关闭查询。像“ bosiljcic”和“bosiljčić”一样?
到目前为止,我的代码:
public function actionSearch()
{
// get search params
$term = Yii::$app->getRequest()->getQueryParam('term');
$page = Yii::$app->getRequest()->getQueryParam('page') ?: 1;
$pageSize = Yii::$app->getRequest()->getQueryParam('page-size') ?: 20;
// query
if ($term == null || strlen($term) < 3) {
$authors = [];
} else {
$query = AuthorSummary::find();
// $query->where(['like','name',$term]);
// $query->where(['RLIKE',$term]);
// $query->where(['REGEXP','PHP|MYSQL']);
$query->andWhere(['published' => Author::STATUS_PUBLISHED]);
$query->orderBy('name');
// pagination
$query->limit($pageSize);
$query->offset(($page - 1) * $pageSize);
$authors = $query->all();
}
return ['authors' => $authors];
}
解决方法
不是解决方案,而是解决方法。在表中存储仅包含基本字符的单独名称字段。您可以通过以下方式获得它:
iconv('utf-8','ascii//TRANSLIT',$text);
对搜索短语执行相同的操作。 搜索原始字段中的原始短语和音译字段中的音译短语。
您也可以尝试使用SOUNDEX或SOUNDS LIKE函数,但那些仅适用于英文字母AFAIK。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。