Laravel - 条款不起作用的地方

时间:2016-07-28 12:37:53

标签: php laravel search laravel-5 query-builder

我正在尝试使用laravel构建一个搜索表单,但我无法使where子句起作用。

$term = $request->input('term');

$count = DB::table('members as m')
         ->where(DB::raw('m.member_first_name'), 'LIKE', "%$term%")
         ->orWhere(DB::raw('m.member_last_name'), 'LIKE', "%$term%")
         ->orWhere(DB::raw('m.member_business_address'), 'LIKE', "%$term%")
         ->orWhere(DB::raw("concat('m.member_first_name',' ','m.member_last_name')"), 'LIKE', "%$term%")
         ->orWhere(DB::raw("concat('m.member_last_name',' ','m.member_first_name')"), 'LIKE', "%$term%")
         ->orWhere(DB::raw("concat('m.member_name_affix',' ','m.member_last_name',' ','m.member_first_name')"), 'LIKE', "%$term%")
         ->orWhere(DB::raw("concat('m.member_first_name',' ','m.member_name_affix',' ','m.member_last_name')"), 'LIKE', "%$term%")
         ->count();

var_dump($count);



var_dump($ count)始终返回所有数据库条目,无论搜索条件是什么。


这是我的第一个Laravel项目,我非常感谢任何帮助。

3 个答案:

答案 0 :(得分:2)

也许尝试将查询包含在整体中:

.filter('SpecialCharacterToSingleQuote', function() {
        return function(text) {
            return text ? String(text).replace(/â/g, "'").replace(/€|™|œ|/g, "") : '';
        };
    });

答案 1 :(得分:0)

您一起使用 / ,这当然会失败。请尝试以下方法:

$count = DB::table('members as m')
     ->where(DB::raw('m.member_first_name'), 'LIKE', "%$term%")
     ->where(function ($query) {
            $query->where(DB::raw('m.member_last_name'), 'LIKE', "%$term%")
                ->orWhere(DB::raw('m.member_business_address'), 'LIKE', "%$term%"));
        })

答案 2 :(得分:0)

只需尝试此代码,如果您遇到一些语法错误,请尝试在此处更改logging.file=/home/apps/log/syste.log 符号..因为我无法在发布之前对其进行测试..

'

您可以使用$term = "%".$request->input('term')."%"; $count = DB::table('members as m') ->where('m.member_first_name', 'LIKE', $term) ->orWhere('m.member_last_name', 'LIKE', $term) ->orWhere('m.member_business_address', 'LIKE', $term) ->orWhereRaw('(concat_ws(m.member_first_name,m.member_last_name) LIKE ? )',[$term]) ->orWhereRaw('(concat_ws(m.member_last_name,m.member_first_name) LIKE ? )',[$term]) ->orWhereRaw('(concat_ws(m.member_name_affix,m.member_last_name,m.member_first_name) LIKE ? )',[$term]) ->orWhereRaw('(concat_ws(m.member_first_name,m.member_name_affix,m.member_last_name) LIKE ? )',[$term]) ->count(); var_dump($count); 不需要将whereRaw()放在DB::raw()内。