我想在这个雄辩的查询中阻止标准的SQL下划线匹配:
$data = DB::table('items')
->distinct()
->select('item_name')
->where('item_name', 'LIKE', $term . '%')
->groupBy('item_name')
->take(15)
->get();
任何人都知道如何以雄辩的方式做到这一点?我需要使用whereRaw吗? 什么是语法?
答案 0 :(得分:1)
此辅助方法会转义所有LIKE
个特殊字符,包括转义字符本身。
/**
* Escape special characters for a LIKE query.
*
* @param string $value
* @param string $char
*
* @return string
*/
function escape_like(string $value, string $char = '\\')
{
return str_replace(
[$char, '%', '_'],
[$char.$char, $char.'%', $char.'_'],
$value
);
}
所以你会像$query->where('foo', 'like', '%'.escape_like('bar').'%')
答案 1 :(得分:-1)
将以下内容用于laravel eloquent
$data = Items::whereRaw("item_name like '%$term%' escape '_' ")
->take(15)->select('item_name')->distinct()->get();
$result = $data->groupBy('item_name');
return $result;
在查询中使用转义
@RouteConfig([
{ name: "Home", component: HomeCMP, path: "/home", useAsDefault: true},
{ name: "Videos", component: VideosCMP, path: "/videos/..."}
])