Laravel 中多对多关系的多个搜索子句
Multiple search clause for many-to-many relationships in Laravel
美好的一天。在我的应用程序中,我有一些对我来说有点问题的东西。我有一个 Staff 模型,它与 Company 模型有多对多的关系。因此,我有一个 company_staff table.So,公司有一个唯一的标识符,即公司代码。
Staff 模型包含名字、姓氏和电子邮件等信息。现在,我想使用名字、姓氏或电子邮件执行搜索操作,但只为具有唯一代码的公司获取数据(即仅在那家公司)。这是我在下面提出的查询:
$users = Staff::where('first_name', 'like', '%' . $request->search_term . '%')
->orWhere('last_name', 'like', '%' . $request->search_term . '%')
->orWhere('email', 'like', '%' . $request->search_term . '%')
->whereHas('coporate', function ($q) use ($company_code) {
$q->where('company_code', $company_code);
})->get();
我得到了结果,但这只是 returns 所有与我的“员工”table 匹配的结果,表现得好像查询的“company_code”部分不存在根本。但是,如果我将查询保留为:
$users = Staff::where('first_name', 'like', '%' . $request->search_term . '%')
->whereHas('coporate', function ($q) use ($company_code) {
$q->where('company_code', $company_code);
})->get();
我得到了想要的结果。但是,我希望能够同时使用 last_name 和电子邮件进行搜索。请问,我该怎么做?
尝试使用此代码
$users = Staff::where(function ($query) use($request) {
$query->where('first_name', 'like', '%' . $request->search_term . '%')
->orWhere('last_name', 'like', '%' . $request->search_term . '%')
->orWhere('email', 'like', '%' . $request->search_term . '%');
})->whereHas('coporate', function ($q) use ($company_code) {
$q->where('company_code', $company_code);
})->get();
美好的一天。在我的应用程序中,我有一些对我来说有点问题的东西。我有一个 Staff 模型,它与 Company 模型有多对多的关系。因此,我有一个 company_staff table.So,公司有一个唯一的标识符,即公司代码。 Staff 模型包含名字、姓氏和电子邮件等信息。现在,我想使用名字、姓氏或电子邮件执行搜索操作,但只为具有唯一代码的公司获取数据(即仅在那家公司)。这是我在下面提出的查询:
$users = Staff::where('first_name', 'like', '%' . $request->search_term . '%')
->orWhere('last_name', 'like', '%' . $request->search_term . '%')
->orWhere('email', 'like', '%' . $request->search_term . '%')
->whereHas('coporate', function ($q) use ($company_code) {
$q->where('company_code', $company_code);
})->get();
我得到了结果,但这只是 returns 所有与我的“员工”table 匹配的结果,表现得好像查询的“company_code”部分不存在根本。但是,如果我将查询保留为:
$users = Staff::where('first_name', 'like', '%' . $request->search_term . '%')
->whereHas('coporate', function ($q) use ($company_code) {
$q->where('company_code', $company_code);
})->get();
我得到了想要的结果。但是,我希望能够同时使用 last_name 和电子邮件进行搜索。请问,我该怎么做?
尝试使用此代码
$users = Staff::where(function ($query) use($request) {
$query->where('first_name', 'like', '%' . $request->search_term . '%')
->orWhere('last_name', 'like', '%' . $request->search_term . '%')
->orWhere('email', 'like', '%' . $request->search_term . '%');
})->whereHas('coporate', function ($q) use ($company_code) {
$q->where('company_code', $company_code);
})->get();