我在Laravel中有这样的代码
if (!empty($filter['term'])) {
$term = $filter['term'];
$query->where('fname', 'ilike', "%$term%")
->orWhere('lname', 'ilike', "%$term%")
->orWhere('company', 'ilike', "%$term%")
}
现在,我想将term
与fname
和lname
的组合进行比较。所以我想像这样使用
CONCAT( fname, ' ', lname ) LIKE '%$term%'
无论如何使用它而不使用原始查询?由于SQL注入,我想避免最大的原始查询。
我使用PgSQL作为数据库。
答案 0 :(得分:1)
您可以使用 whereRaw()实现这一目标 - 它允许您执行原始SQL代码:
$query->whereRaw("CONCAT( fname, ' ', lname ) LIKE '%?%'", array(DB::getPdo()->quote($term)))
原始代码中的问号将替换为传递给 whereRaw()
的第二个参数传递的数组中的值