gpt4 book ai didi

mysql - Laravel 原始查询 : Removing chars from string | How can it be improved?

转载 作者:行者123 更新时间:2023-11-29 05:55:28 25 4
gpt4 key购买 nike

我正在使用接受用户输入作为字符串的全局搜索栏。但是,我想发出特殊的打字字符。想想点、逗号等。您可以在下面看到我当前的数据库检查(因为它是基于 Ajax 的):

public function scopeWhereName($query, $queryString) {
$query->where(function ($query) use ($queryString) {
$query->where(\DB::raw("REPLACE(name, ' ', '')"), 'LIKE', '%' . $queryString . '%')
->orWhere(\DB::raw("REPLACE(name, '.', '')"), 'LIKE', '%' . $queryString . '%')
->orWhere(\DB::raw("REPLACE(name, ',', '')"), 'LIKE', '%' . $queryString . '%')
->orWhere(\DB::raw("REPLACE(name, '!', '')"), 'LIKE', '%' . $queryString . '%')
->orWhere(\DB::raw("REPLACE(name, '?', '')"), 'LIKE', '%' . $queryString . '%')
->orWhere(\DB::raw("REPLACE(name, ':', '')"), 'LIKE', '%' . $queryString . '%')
->orWhere(\DB::raw("REPLACE(name, '-', '')"), 'LIKE', '%' . $queryString . '%')
->orWhere(\DB::raw("REPLACE(name, '@', '')"), 'LIKE', '%' . $queryString . '%')
->orWhere(\DB::raw("REPLACE(name, '#', '')"), 'LIKE', '%' . $queryString . '%')
->orWhere(\DB::raw("REPLACE(name, '&', '')"), 'LIKE', '%' . $queryString . '%')
->orWhere(\DB::raw("REPLACE(name, '/', '')"), 'LIKE', '%' . $queryString . '%');
});
}

如标题所述,我的问题是是否有可能将上述查询变成更好的查询,从而使其性能更轻且更易于阅读。

最佳答案

您可以简化查询创建:

$chars = [' ', '.', ',', ...];
foreach($chars as $char) {
$query->orWhere(\DB::raw("REPLACE(name, '$char', '')"), 'LIKE', '%' . $queryString . '%')
}

如果您进行大量搜索,您也许应该创建一个单独的列来存储没有特殊字符的名称。

关于mysql - Laravel 原始查询 : Removing chars from string | How can it be improved?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49792642/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com