我有一个表单与1输入到筛选器的完整(!)名称
<label>Search by fullname:</label>
<input type="text" name="fullname">
Problem:在my databases 用户表中,fullname被拆分为3字段
# users
id | title | firstname | lastname
---------------------------------
1 | Dr. | John | Doe
2 | | Peter | Pan
fullname = title + firstname + lastname
我想找出输入的结果,就像无名氏博士,还有无名氏或,。
目前我只知道如何分别过滤每个字段:
$users = User::where('firstname', 'like', '%'.$keyword.'%')->get();
有什么想法吗?谢谢!
发布于 2019-02-28 03:01:38
您可以使用DB::raw()和MySQL's concat来实现这一点:
$users = User::where(DB::raw('concat(title," ",firstname," ",lastname)'), 'like', '%'.$keyword.'%')->get();
发布于 2019-02-28 07:01:10
像戴维特的答案,不是一个最佳解决方案,但它可能会工作。
$fullName = "Mr Philip Phil Philips";
$nameParts = explode(' ', $fullName);
$matching_users = User::whereIn('first_name', $nameParts)
->orWhereIn('last_name', $nameParts)
->orWhereIn('title', $nameparts)
->get();
https://stackoverflow.com/questions/54912634
复制相似问题