检查两列组合而不进行原始查询

时间:2016-01-05 08:28:09

标签: php sql postgresql laravel concatenation

我在Laravel中有这样的代码

 if (!empty($filter['term'])) {

        $term  = $filter['term'];
        $query->where('fname', 'ilike', "%$term%")
              ->orWhere('lname', 'ilike', "%$term%")
              ->orWhere('company', 'ilike', "%$term%")
    }

现在,我想将termfnamelname的组合进行比较。所以我想像这样使用

CONCAT( fname,  ' ', lname ) LIKE  '%$term%'

无论如何使用它而不使用原始查询?由于SQL注入,我想避免最大的原始查询。

我使用PgSQL作为数据库。

1 个答案:

答案 0 :(得分:1)

您可以使用 whereRaw()实现这一目标 - 它允许您执行原始SQL代码:

$query->whereRaw("CONCAT( fname,  ' ', lname ) LIKE  '%?%'", array(DB::getPdo()->quote($term)))

原始代码中的问号将替换为传递给 whereRaw()

的第二个参数传递的数组中的值