Laravel 5.2 WHERE LIKE有问号或没有引号的字符串

时间:2018-04-06 15:21:24

标签: mysql laravel-5.2

我试图在Laravel 5.2中填写搜索表单。我遇到了一个问题,其中$ search将成为我的SQL查询中的问号。我使用了 - > toSql()来获取查询结果。我使用DB :: table()和WHERE这样:

->where('clientname', 'LIKE', $search)
->orWhere('ClientFirstName', 'LIKE', [$search])
->orWhere('ClientLastName', 'LIKE', DB::raw($search))

其中每个都在查询中创建不同的结果:

" clientname喜欢哪里?还是ClientFirstName喜欢?或ClientLastName LIKE test"

使用DB :: raw()我从表单中获取搜索参数,但我无法使用%进行通配符搜索,并且我无法在其周围添加单引号或双引号有合适的语法来完成搜索查询。

感谢任何建议!

2 个答案:

答案 0 :(得分:0)

尝试使用此代码

->where('clientname', 'LIKE', '%'.$search.'%')
->orWhere('ClientFirstName', 'LIKE', '%'.$search.'%')
->orWhere('ClientLastName', 'LIKE', '%'.$search.'%')->get();

答案 1 :(得分:0)

->where(function ($q) use ($searchValues) {
            foreach ($searchValues as $value) {
                $q->orWhere('ClientFirstName', 'LIKE', "%{$value}%");
            }
        })
        ->orWhere(function ($q) use ($searchValues) {
            foreach ($searchValues as $value) {
                $q->orWhere('ClientLastName', 'LIKE', "%{$value}%");
            }
        })

我最终将此作为我的最终解决方案。