首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用spatie/laravel-query-builder来过滤/搜索有关系的数据?(Laravel)

如何使用spatie/laravel-query-builder来过滤/搜索有关系的数据?(Laravel)
EN

Stack Overflow用户
提问于 2021-08-30 09:49:03
回答 1查看 338关注 0票数 0

当我询问如何过滤有关系的数据时,有人推荐我使用spatie/laravel-query-builder来过滤/搜索数据。我仍然对此感到困惑。

我要做的是:过滤/搜索角色为‘Student’(关系)的数据,并包含'x‘这个词。

在添加任何空间/查询构建器代码之前使用mycontroller.php

代码语言:javascript
复制
public function searchStudent(Request $request)
        {
            $user = Auth::user(); // Untuk Photo Profile
            // menangkap data pencarian
            $search = $request->table_search;
                // This part is the code that supposed to filter the search that has relation to data named Student in name column
            $search = User::whereHas('roles', function($q){
                $q->where('name', 'Student');
            })->where('name','like',"%".$search."%")
            ->orWhere('nisn','like',"%".$search."%")
            ->orWhere('username','like',"%".$search."%")
            ->get();
                // // what I got is actually the normal search, so all other relation than Student also show up
            return view('pages.admin.user.student.showStudentFiltered', compact('search', 'user') );
        }

我得到的只是一个老的常规搜索。它们只显示包含“x”字的所有数据,而不显示它们之间的关系。

我想要的搜索数据示例:搜索词'A‘具有'Student’角色的用户

Aqua|角色:学生

Armin|角色:学生

阿尔卑斯|角色:学生

我得到的是:

管理员|角色:管理员

阿姆斯特丹|角色:教师

Amel|角色:教师

Aqua|角色:学生

Armin|角色:学生

阿尔卑斯|角色:学生

有人知道如何使用spatie/laravel-query-builder或如何获得我想要的过滤/搜索功能吗?我需要重写哪些代码?

EN

回答 1

Stack Overflow用户

发布于 2021-08-30 10:08:11

查询构建器whereHas的底层SQL不连接,它只是一个额外的where子句。with将为您连接。

代码语言:javascript
复制
User::with('roles')->whereHas('roles', function($q){
                $q->where('name', 'Student');
            })
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68982046

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档