laravel:如何在流利的查询中使用LOWERCASE函数?

fzsnzjdm  于 2023-03-13  发布在  其他
关注(0)|答案(3)|浏览(134)

我想实现不区分大小写的搜索下面是我的搜索代码

/*get the title to search*/
$newsTitle=Input::get('srach_newsTitle')?Input::get('srach_newsTitle'):'';
$query = DB::table('news');
if( strlen($newsTitle) )
    {
        $query->whereRaw('LOWERCASE(`newsTitle`) LIKE ? ',[trim(strtolower($newsTitle)).'%']);
    }

但它说函数LOWERCASE未在我的项目中定义,以下是错误消息
在Connection.php第729行出现异常:数据库状态[42000]:语法错误或访问冲突:1305函数cpr-laravel.小写不存在(SQL:从news中选择计数(*)作为聚合,其中小写(newsTitle)LIKE测试%)
我做错了什么?请帮忙

svdrlsy4

svdrlsy41#

使用LOWER()

$query->whereRaw('LOWER(`newsTitle`) LIKE ? ',[trim(strtolower($newsTitle)).'%']);
owfi6suc

owfi6suc2#

上面的代码很好,但是有一些问题,主要是磷虾中的字母不能小写
这是一个对我有效的例子

$search = mb_strtolower(trim(request()->input('search')));

$query->whereRaw('LOWER(`newsTitle`) LIKE ? ',['%'.$search.'%']);

我想搜索存储在多语言JSON中的数据,这很适合我。

public function search()
    {
        $search = mb_strtolower(trim(request()->input('search')));
        $products = DB::table('products')
            ->whereRaw("LOWER(JSON_EXTRACT(name, \"$.".app()->getLocale()."\")) LIKE ?", ["%".$search."%"])
            ->whereNull('deleted_at')
            ->select(['id', 'name', 'slug',])
            ->orderBy('id', 'desc')
            ->limit(15)->get();

        return $products;
    }
eulz3vhy

eulz3vhy3#

使用LOWER()

$query->whereRaw('LOWER(`newsTitle`) LIKE ? ',[strtolower(trim($newsTitle)).'%']);

上面的答案是正确的。但是在使用“strtolower”之后再使用“trim”会更快。

相关问题