MYSQL 在 Laravel 中显示包含连字符的结果?

问题描述 投票:0回答:1

我有一些带有

name
列的产品,看起来像
product-example
。如果我搜索
case-insensitive
product example
,我会尝试找到与
product-example
相同的结果。我有我的疑问,但它不起作用我有一个
Syntax error
:

$products = Product::whereRaw(
    "UPPER('REPLACE(name, '-', ' ')') LIKE '%'".str_replace('-', ' ', $search)."'%'"
    )
    ->get();
php laravel eloquent
1个回答
1
投票

MySQL 默认不区分大小写。

MySQL 文档中所述:

SQL 模式匹配使您可以使用 _ 来匹配任何单个字符

因此您可以将

" "
"-"
替换为
"_"
,这将允许您匹配连字符或空格:

$products = Product::where('name', 'like', '%' . str_replace([' ', '-'], '_', $search). '%')->get();

这里有一些 cheatsheet 可以帮助您使用 MySQL 通配符。

© www.soinside.com 2019 - 2024. All rights reserved.