Laravel雄辩的地方用多个单词查询



我有以下查询(简短剪切):

    $employees = Employee::where('first_name', 'LIKE', "%$query%")
                 ->orWhere('last_name', 'LIKE', "%$query%")

现在,当用户输入诸如" John"或" Smith"之类的单个名称时,这起作用了,但是当他们输入" John Smith"时,它找不到任何东西。我想念一个额外的地方吗?

尝试以下:

Employee::where(DB::raw('CONCAT(first_name," ",lastname)'), 'LIKE', "%' . $query . '%"))

您必须添加第三orWhere。对于我们的搜索功能,我们使用类似的东西:

Employee::whereraw("COALESCE(last_name, '') LIKE '%$query%'")
    ->Orwhereraw("COALESCE(first_name, '') LIKE '%$query%'")
    ->Orwhereraw("COALESCE(last_name + ', ' + first_name, '') LIKE '%$query%'")

添加Cocece似乎有助于解决我们第一次实施时遇到的一些问题,但是在您的情况下是否有必要。

您可以做:

$ fullname = trim($ query);

$employees  = Employee::where(DB::raw("CONCAT(first_name, ' ', last_name)"), 'LIKE', "%".$fullName."%")->get();

您是在 first_name + ' ' + last_name的数据库中加入值,然后使用喜欢查找匹配记录。

最新更新