我想请求您的帮助,因为我在创建Laravel查询时遇到了困难。
下面是我当前的代码:
$products = Product::where(function($query) use ($searchTerm) {
$query->where('product_name', 'LIKE', "%$searchTerm%");
$query->orWhere('product_category', 'LIKE', "%$searchTerm%");
$query->orWhere('product_description', 'LIKE', "%$searchTerm%");
})
->where('lang', '=', 'en')
->orderBy('product_name', 'ASC')
->get();
如果我有一个名为 * Michael's Handsoap * 的产品,用户使用关键字 "Michaels" 进行搜索,上面的查询将不会返回任何结果。在您执行查询时,是否有方法从数据库字段中删除特殊字符?如果您有任何输入,我们将不胜感激。
谢谢!
- EDIT:**认为最好只添加一个
product_name_search
列,该列包含去掉特殊字符的产品名称(例如,使用preg_replace("/[^A-Za-z0-9 ]/", '', $productName)
)
- EDIT:**认为最好只添加一个
这样就可以使用$query->where('product_name_search', 'LIKE', "%$searchTerm%")
了,它增加了一个参数,但至少现在已经涵盖了所有参数。
1条答案
按热度按时间vfh0ocws1#
尝试使用MySQL函数(如
TRIM()
或REPLACE()
)删除查询时的特殊字符。