我有一些带有
name
列的产品,看起来像product-example
。如果我搜索 case-insensitive
或 product example
,我会尝试找到与 product-example
相同的结果。我有我的疑问,但它不起作用我有一个 Syntax error
:
$products = Product::whereRaw(
"UPPER('REPLACE(name, '-', ' ')') LIKE '%'".str_replace('-', ' ', $search)."'%'"
)
->get();
MySQL 默认不区分大小写。
如MySQL 文档中所述:
SQL 模式匹配使您可以使用 _ 来匹配任何单个字符
因此您可以将
" "
和 "-"
替换为 "_"
,这将允许您匹配连字符或空格:
$products = Product::where('name', 'like', '%' . str_replace([' ', '-'], '_', $search). '%')->get();
这里有一些 cheatsheet 可以帮助您使用 MySQL 通配符。