Laravel:逃避"LIKE"条款?

mpe*_*pen 10 php laravel laravel-4

如何逃避LIKELaravel/Eloquent中的一个条款?例如,

$search = Input::query('sSearch', '');
if($search !== '') {
    $paginatedBookings->where('first_name', 'LIKE', '%' . $search . '%');
}
Run Code Online (Sandbox Code Playgroud)

如果$search包含%_需要转义它们.

ntz*_*tzm 15

另一个答案是忘记逃避转义字符本身,这是一个更强大的解决方案:

/**
 * Escape special characters for a LIKE query.
 *
 * @param string $value
 * @param string $char
 *
 * @return string
 */
function escape_like(string $value, string $char = '\\'): string
{
    return str_replace(
        [$char, '%', '_'],
        [$char.$char, $char.'%', $char.'_'],
        $value
    );
}
Run Code Online (Sandbox Code Playgroud)

  • +1.我之前从未见过[返回类型声明](http://php.net/manual/en/functions.returning-values.php#functions.returning-values.type-declaration). (3认同)