繁体   English   中英

Laravel 中多对多关系的多个搜索子句

[英]Multiple search clause for many-to-many relationships in Laravel

再会。 在我的应用程序中,我有一些对我来说有点问题的东西。 我有一个员工 model,它与公司 model 存在多对多关系。因此,我有一个 company_staff 表。因此,公司有一个唯一标识符,即公司代码。 员工 model 有名字、姓氏和 email 等信息。现在,我想使用名字、姓氏或 email 执行搜索操作,但只获取具有唯一代码的公司的数据(即只在内部搜索那家公司)。 这是我在下面提出的查询:

$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();

我得到了结果,但这只会返回与我的“staff”表匹配的所有结果,就好像查询的“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 和 email 进行搜索。 请问,我go这个怎么办?

尝试使用此代码

$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();

更多信息: https://laravel.com/docs/6.x/queries#parameter-grouping

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM