如何使用 Laravel 在 LIKE 搜索中使用 ORM 从两个表中获取数据
Posted
技术标签:
【中文标题】如何使用 Laravel 在 LIKE 搜索中使用 ORM 从两个表中获取数据【英文标题】:How to fetch data from two tables using ORM in LIKE search using Laravel 【发布时间】:2019-12-13 17:58:14 【问题描述】:这是我的控制器代码:
public function searchUser(Request $request)
$pram = $request->name;
$data['users'] = User::whereHas('userBasicInfo', function ($query) use ($pram)
$query->where('first_name', 'like', '%' . $pram . '%')
->orWhere('middle_name', 'like', '%' . $pram . '%')
->orWhere('last_name', 'like', '%' . $pram . '%');
)->with(['userBasicInfo' => function ($query) use ($pram)
$query->where('first_name', 'like', '%' . $pram . '%')
->orWhere('middle_name', 'like', '%' . $pram . '%')
->orWhere('last_name', 'like', '%' . $pram . '%');
])->get();
return $data;
我与 userBasicInfo 有用户关系;我可以使用 first_name、middle_name 和 last_name 进行搜索,我的请求参数是 name。
现在我想用用户电子邮件进行搜索,并且还有一个请求参数是电子邮件,电子邮件在用户表中。
我如何也可以使用用户电子邮件进行搜索?
【问题讨论】:
【参考方案1】:试试看
$data['users'] = User::with('userBasicInfo')
->where('email', 'like', '%' . $pram . '%') //this is from use table
->orWhereHas('userBasicInfo', function($query) use($pram)
//search in basic info table
$query->where('first_name', 'like', '%' . $pram . '%')
->orWhere('middle_name', 'like', '%' . $pram . '%')
->orWhere('last_name', 'like', '%' . $pram . '%');
)
->get();
您不需要从搜索表单中发送不同的值。单个值可以用作搜索值。
【讨论】:
以上是关于如何使用 Laravel 在 LIKE 搜索中使用 ORM 从两个表中获取数据的主要内容,如果未能解决你的问题,请参考以下文章
在 Laravel 中使用 Eloquent ORM 使用 LIKE 执行数据库搜索