我遇到的问题是特殊字符。使用输入 %(Modular)、__(_Underscore)、O(Number) 进行搜索。它不会过滤掉任何结果。它将显示所有结果。在哪里搜索具有其他特殊字符和数字显示正确结果的模板。
如果在数据库中我的 myname 主题是 % 用户,而用户搜索输入是 %,则找不到结果。同__(_Underscore), O(Number).
($searchkeyword) {
$q->where(function($query) use ($searchkeyword) {
$query->where('studentname', 'like', "%$searchkeyword%")
->orWhere('subject', 'like', "%$searchkeyword%")
->orWhere('city', 'like', "%$searchkeyword%");
});
})
答案 0 :(得分:0)
您需要在搜索关键字中转义 %
。我不知道为什么 _
和 0
在你的情况下不起作用,但也许你也需要逃避它们。
在 MySQL 中,您需要使用 [%]
。因此,也许在您的情况下,如果您事先执行 str_replace
,查询可能会起作用。
$searchkeyword = str_replace('%', '[%]', $searchkeyword);
// query
答案 1 :(得分:0)
请更改
($searchkeyword) {
$q->where(function($query) use ($searchkeyword) {
$query->where('studentname', 'like', "%$searchkeyword%")
->orWhere('subject', 'like', "%$searchkeyword%")
->orWhere('city', 'like', "%$searchkeyword%");
});
})
到
$searchkeyword = (string)$searchkeyword;
($searchkeyword) {
$q->where(function($query) use ($searchkeyword) {
$query->where('studentname', 'like', "%".$searchkeyword."%")
->orWhere('subject', 'like', "%".$searchkeyword."%")
->orWhere('city', 'like', "%".$searchkeyword."%");
});
})
答案 2 :(得分:0)
试试下面的代码,
$students = Student::all();
$students->where(function($query) use($searchkeyword) {
$query->where('studentname', 'like', '%' . $searchkeyword . '%')
->orWhere('subject', 'like', '%' . $searchkeyword . '%')
->orWhere('city', 'like', '%' . $searchkeyword . '%')
});