SQL Postgre 在获取相同的多条数据时显示 1 个数据以及如何实现 laravel 查询
SQL Postgre to show 1 data if get same some multiple data and how to implement to laravel query
我想问一下 postgresql 中的 sql,我从 join with 3 table 得到了数据,我得到了结果,但是我得到了像这张图片这样的多个数据
result
这是我在 postgresqlsql
中的代码
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条数据不显示多个相同数据的问题。感谢你们对我的帮助。上帝保佑你
使用distinct()
$data = DB::table('test')->[your query builder]->distinct()->get();
稍作改动,使其与您的查询构建器相关
我想问一下 postgresql 中的 sql,我从 join with 3 table 得到了数据,我得到了结果,但是我得到了像这张图片这样的多个数据 result
这是我在 postgresqlsql
中的代码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条数据不显示多个相同数据的问题。感谢你们对我的帮助。上帝保佑你
使用distinct()
$data = DB::table('test')->[your query builder]->distinct()->get();
稍作改动,使其与您的查询构建器相关