使用 Laravel elequant 进行特殊字符和搜索

时间:2021-06-30 06:35:04

标签: javascript php laravel laravel-5 eloquent

我遇到的问题是特殊字符。使用输入 %(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%");
                    });
                })

3 个答案:

答案 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 . '%')
});