首页 > 解决方案 > SQL Postgre 如果获得相同的多个数据,则显示 1 个数据以及如何实现 laravel 查询

问题描述

我想问一下postgresql中的sql,我从加入3个表中得到数据,我得到了结果,但我得到了多个数据,比如这个图像 结果

这里是我在 postgresql 中的 sql 代码

select users.* from users inner join model_has_roles on model_has_roles.model_id = users.id 
left join roles on roles.id = model_has_roles.role_id where roles.name not in ('job-seeker') order by users.name asc

如何修复这个查询,我得到了多个数据,只有 1 个数据要显示。

我希望这个 sql 实现到 laravel 查询,现在我的代码在这里

public function getAccountList(){
        $req = app(Request::class);
        // $getAccount = User::query();
        $getAccount = User::join('model_has_roles', function($join) {
            $join->on('users.id', '=', 'model_has_roles.model_id');
        })->leftJoin('roles', function($join){
            $join->on('model_has_roles.role_id', '=', 'roles.id');
        });

        $getAccount->whereNotIn('roles.name', ['job-seeker']);

        if ($q = $req->query('q')) {
            $searchTerm = trim(strtolower($q));
            $getAccount->whereRaw(
                'LOWER(users.name) like (?) or LOWER(users.email) like (?)',
                ["%{$searchTerm}%", "%{$searchTerm}%"]
            );
        }

        // $getAccount->get()->unique('name');
        $getAccount->select(['users.*']);

        $paginator = $this->pagination($getAccount);

        return $this->paginate($paginator, new UserTransformer);
    }

如何修复查询只有 1 个数据以显示不多个相同的数据。感谢你们对我的帮助。上帝祝福你

标签: sqllaravellumen

解决方案


使用不同的()

$data = DB::table('test')->[your query builder]->distinct()->get();

Laravel 查询生成器文档

只需稍作更改以使其与您的查询生成器相关


推荐阅读