【发布时间】:2014-01-14 03:31:00
【问题描述】:
我正在 Laravel 4.1 中构建类似于 Facebook 的 AJAX 搜索功能。搜索字段应针对first_name、last_name 和email 搜索users 表。
我可能会输入以下任何条款或条款的一部分,例如:
- 贾里德
- 艾特尼尔
- 贾里德·艾特尼尔
- jeitnier@domain.com
- 贾
- jeit
- 等
首先我尝试过:
User::where('email', 'LIKE', $search)
->orWhere('first_name', 'LIKE', $search)
->orWhere('last_name', 'LIKE', $search)
->get();
但这只是匹配其中一个词。然后我尝试用空格分解输入并构建这样的查询:
User::whereRaw("MATCH (first_name, last_name, email)
AGAINST ('$explode[0]' IN BOOLEAN MODE)
AND MATCH (first_name, last_name, email)
AGAINST ('$explode[1]' IN BOOLEAN MODE)")
->get();
有效但只能获得完全匹配('jared'、'eitnier' 或 'jared eitnier')
我需要更改哪些内容才能获得 LIKE 匹配项但输入的任何术语组合?
【问题讨论】: