Select DISTINCT returns 重复数据 Laravel 8
Select DISTINCT returns duplicates data Laravel 8
我正在尝试为主管显示属于他的组。我正在使用 join 获取基于 supervisor_id
的每个 gpid
信息,查询它没问题,但 returns 最后一行的重复数据。我不明白为什么它会复制最后一条记录。任何帮助将不胜感激。
$res = DB::table('tickets')
->join('gp_groups', 'tickets.id', '=', 'gp_groups.gpid')
->where('gp_groups.supervisor_id', 15)
->distinct('gp_groups.gpid')
->get();
dd($res);
结果
0 => {#1390 ▼
+"id": 84
+"gpname": "G2"
+"detail": "Mahdi"
+"gender": "Male"
+"semester": 432
+"status": "Not assigned"
+"Assigned": null
+"user_id": 19
+"track_id": 4
+"created_at": null
+"updated_at": null
+"gpid": 71
+"student_id": 13
+"supervisor_id": 15
}
1 => {#1396 ▼
+"id": 83
+"gpname": "hifjksd"
+"detail": "hfdjkjs"
+"gender": "Female"
+"semester": 431
+"status": "Not assigned"
+"Assigned": null
+"user_id": 1
+"track_id": 2
+"created_at": null
+"updated_at": null
+"gpid": 73
+"student_id": 13
+"supervisor_id": 15
}
2 => {#1353 ▼
+"id": 109
+"gpname": "4512"
+"detail": "8956"
+"gender": "Male"
+"semester": 431
+"status": "Not assigned"
+"Assigned": null
+"user_id": 1
+"track_id": 3
+"created_at": null
+"updated_at": null
+"gpid": 83
+"student_id": 12
+"supervisor_id": 15
}
3 => {#1331 ▼
+"id": 110
+"gpname": "4512"
+"detail": "8956"
+"gender": "Male"
+"semester": 431
+"status": "Not assigned"
+"Assigned": null
+"user_id": 1
+"track_id": 3
+"created_at": null
+"updated_at": null
+"gpid": 83
+"student_id": 13
+"supervisor_id": 15
}]}
您可以尝试使用 groupBy
而不是 distinct
:
$res = DB::table('tickets')
->join('gp_groups', 'tickets.id', '=', 'gp_groups.gpid')
->where('gp_groups.supervisor_id', 15)
->groupBy('gp_groups.gpid')
->get();
dd($res);
我正在尝试为主管显示属于他的组。我正在使用 join 获取基于 supervisor_id
的每个 gpid
信息,查询它没问题,但 returns 最后一行的重复数据。我不明白为什么它会复制最后一条记录。任何帮助将不胜感激。
$res = DB::table('tickets')
->join('gp_groups', 'tickets.id', '=', 'gp_groups.gpid')
->where('gp_groups.supervisor_id', 15)
->distinct('gp_groups.gpid')
->get();
dd($res);
结果
0 => {#1390 ▼
+"id": 84
+"gpname": "G2"
+"detail": "Mahdi"
+"gender": "Male"
+"semester": 432
+"status": "Not assigned"
+"Assigned": null
+"user_id": 19
+"track_id": 4
+"created_at": null
+"updated_at": null
+"gpid": 71
+"student_id": 13
+"supervisor_id": 15
}
1 => {#1396 ▼
+"id": 83
+"gpname": "hifjksd"
+"detail": "hfdjkjs"
+"gender": "Female"
+"semester": 431
+"status": "Not assigned"
+"Assigned": null
+"user_id": 1
+"track_id": 2
+"created_at": null
+"updated_at": null
+"gpid": 73
+"student_id": 13
+"supervisor_id": 15
}
2 => {#1353 ▼
+"id": 109
+"gpname": "4512"
+"detail": "8956"
+"gender": "Male"
+"semester": 431
+"status": "Not assigned"
+"Assigned": null
+"user_id": 1
+"track_id": 3
+"created_at": null
+"updated_at": null
+"gpid": 83
+"student_id": 12
+"supervisor_id": 15
}
3 => {#1331 ▼
+"id": 110
+"gpname": "4512"
+"detail": "8956"
+"gender": "Male"
+"semester": 431
+"status": "Not assigned"
+"Assigned": null
+"user_id": 1
+"track_id": 3
+"created_at": null
+"updated_at": null
+"gpid": 83
+"student_id": 13
+"supervisor_id": 15
}]}
您可以尝试使用 groupBy
而不是 distinct
:
$res = DB::table('tickets')
->join('gp_groups', 'tickets.id', '=', 'gp_groups.gpid')
->where('gp_groups.supervisor_id', 15)
->groupBy('gp_groups.gpid')
->get();
dd($res);