I’m trying to get groups that belong to a supervisor to be displayed for him. And I’m using join to get each gpid
information base on supervisor_id
, query its okay but returns duplicate data of the last row. I can’t figure out why it is duplicating the last record. Any help would be much appreciated.
JavaScript
x
$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);
Result
JavaScript
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
}]}
Advertisement
Answer
You can try to use groupBy
instead of distinct
:
JavaScript
$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);