我的网站搜索有问题。我有一个搜索输入按名称查找产品。如果我键入'le'ñ(问题是奇怪的字符)。
这在控制器里
$termino = $_POST['search']);
$locale = LaravelLocalization::getCurrentLocale(); //es in this case
$products = Product::where('title', 'LIKE', "%\"{$locale}\":%{$termino}%");
这是数据库中“title”字段的内容。
{"es":"PAN DE LE\u00d1A"}
搜索返回0个结果。
我确信问题在于法典化,我不知道´我不知道怎么解决。
编码为utf8mb4。
谢谢
2条答案
按热度按时间2ekbmq321#
我只需要在执行查询之前对字符串进行编码,例如:
byqmnocz2#
问题其实并不在于非英语字符。根本问题在于,您将复杂数据格式(json)存储在单个数据库单元中,而不是将数据库设计为容纳单个数据段:
你有一个关系数据库,但你没有围绕你的数据结构设计它,所以你不能使用它的大部分功能,包括基本的东西,如
WHERE
或者ORDER BY
.您可以修复设计(请,执行)或应用解决方案:
如果您有一个最新的mysql版本,那么可以将
JSON
类型。您可以创建两个版本的json数据,并期望数据库值不会有混合大小写:
请注意,也没有像通配符那样使用合理的解决方法。