我一直在尝试解决此问题,我将全名表分为2个,“ nombre”代表姓氏,“ apellido”代表姓氏,事实是有时它们有2个名字和1个姓氏: [name: ANTONIO DAMIAN] [lastname: RAFANIELLO]
$name
完整搜索只有一个,目前这是我的搜索
$nombre = request('query');
$socios = Socio::where('nombre', 'like', "%{$nombre}%")
->orWhere('apellido', 'like', "%{$nombre}%")
->orWhere(DB::raw("concat(nombre, ' ', apellido)"), 'like', "%".$nombre."%")
->orWhere('documento', 'like', "%{$nombre}%")
->orderBy('id', 'desc')
->paginate($this->paginateNumber)
->appends(['query'=>$nombre]);
代码应该起作用的部分是,->orWhere(DB::raw("concat(nombre, ' ', apellido)"), 'like', "%".$nombre."%")
但是如果我搜索antonio rafaniello
它,则显示为空搜索。
另外,如果我尝试原始SQLSELECT * FROM socio WHERE concat(nombre, ' ', apellido) = '%antonio rafaniello%'
要么显示任何内容
我在这里一直在寻找其他遮阳篷,但是他们都没有帮助我,非常感谢您的帮助。
你试一试
$nombre = request('query');
$socios = Socio::where('nombre', 'like', "%{$nombre}%")
->orWhere(DB::raw("concat(nombre, ' ', apellido)"), 'like', "%".strtr($nombre,' ','%')."%")
->orWhere('documento', 'like', "%{$nombre}%")
->orderBy('id', 'desc')
->paginate($this->paginateNumber)
->appends(['query'=>$nombre]);
但是要充分扫描... :(
编辑-说明:
更改之处在于strtr($nombre,' ','%')
他用%更改了空格,因此sql会将每个单词分别用于SELECT
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句