Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

deepu07's avatar
Level 11

Get all the records by using explode

Hi Guys Can anyone help me out (URL: http://localhost/getStudents/4:5:6:7) Even 4,5,6,7 records existed in database but not getting all the records and displaying only last record. How to display all the existed records in output? Thanks in advance

```public function getStudents($ids)
{   
    if(!$ids) 
        return "Please enter a valid student id";

    $studentIds = explode(':', $ids);

    $data = [];

    // fill output with blank data
    foreach ($studentIds as $studentId) {
        $data[$studentId] = [];
    }
    $students = Student::where('id', $studentId)->get();

    if(!$students)
        return "No Students are found with this . '$studentId' .";
    
    foreach ($students as $student) {
        $studentData=[];
        // $data[$studentId] = [];

        $studentData['roll_nuber'] = $student->roll_number;
        $studentData['first_name'] = $student->first_name;
        $studentData['last_name'] = $student->last_name;
        $studentData['gender'] = $student->gender;
        $studentData['graduated_year'] = $student->graduated_year;
        array_push($data, $studentData);
    }
    return response(['success' => true, 'data' => $data], 200);
}```

output

    "success": true,
    "data": {
        "4": [],
        "5": [],
        "6": [],
        "7": [],
        "8": {
            "roll_nuber": "Rd@1979T",
            "first_name": "Randy",
            "last_name": "Daugherty",
            "gender": "Female",
            "graduated_year": "2000-01-01"
        }
    }
}```




***expected***
```{
    "success": true,
    "data": {
       "4": {
            "roll_nuber": "Rd@1978T",
            "first_name": "Ran",
            "last_name": "Daugherty",
            "gender": "Female",
            "graduated_year": "2003-01-01"
        },
        "5": {
            "roll_nuber": "Rd@1976T",
            "first_name": "Rand",
            "last_name": "Daugh",
            "gender": "Female",
            "graduated_year": "2004-01-01"
        },
        "6": {
            "roll_nuber": "Rd@1977T",
            "first_name": "Randz",
            "last_name": "Daughe",
            "gender": "Female",
            "graduated_year": "2007-01-01"
        },
       "7": {
            "roll_nuber": "Rd@1974T",
            "first_name": "Randyy",
            "last_name": "Daughert",
            "gender": "male",
            "graduated_year": "2001-01-01"
        },
        "8": {
            "roll_nuber": "Rd@1979T",
            "first_name": "Randyyy",
            "last_name": "Daugherty",
            "gender": "male",
            "graduated_year": "2010-01-01"
        }
    }
}```
0 likes
9 replies
Nagraj722's avatar

Try below code...

public function getStudents($ids)
{   
    if(!$ids) 
        return "Please enter a valid student id";

    $studentIds = explode(':', $ids);

    $students = Student::whereIn('id', $studentId)->get();

    if(!$students){
        return "No Students are found with this . '$studentId' .";
    }else{
    
    foreach ($students as $student) {
        $studentData=[];
        // $data[$studentId] = [];

        $studentData['roll_nuber'] = $student->roll_number;
        $studentData['first_name'] = $student->first_name;
        $studentData['last_name'] = $student->last_name;
        $studentData['gender'] = $student->gender;
        $studentData['graduated_year'] = $student->graduated_year;
        array_push($data, $studentData);
    }
    }
    return response(['success' => true, 'data' => $data], 200);
}

Nagraj722's avatar

change below line

  $students = Student::whereIn('id', $studentId)->get();

to

  $students = Student::whereIn('id', $studentIds)->get();

deepu07's avatar
Level 11

Getting like this array_push() expects parameter 1 to be array, null given

deepu07's avatar
Level 11

Added $data = []; foreach ($studentIds as $studentId) { $data[$studentId] = []; } Bcse I want to display id object with details but getting like this

    "success": true,
    "data": {
        "4": [],
        "5": [],
        "6": [],
        "7": [],
        "8": {
            "roll_nuber": "Dh@1976Z",
            "first_name": "Destinee",
            "last_name": "Hoeger",
            "gender": "Male",
            "graduated_year": "2000-01-01"
        },
        "9": {
            "roll_nuber": "Sj@1985O",
            "first_name": "Shyanne",
            "last_name": "Johnson",
            "gender": "Female",
            "graduated_year": "2000-01-01"
        },
        "10": {
            "roll_nuber": "Vr@2015U",
            "first_name": "Verona",
            "last_name": "Reynolds",
            "gender": "Female",
            "graduated_year": "2000-01-01"
        },
        "11": {
            "roll_nuber": "Rd@1979T",
            "first_name": "Randy",
            "last_name": "Daugherty",
            "gender": "Female",
            "graduated_year": "2000-01-01"
        }
    }
}```
Nagraj722's avatar

I just ran this code on my local system with different table... it's working good for me

{
"success": true,
"data": [
{
"roll_nuber": 4,
"first_name": "FDA Approves MEDICREAs K-JAWS(R",
"last_name": null,
"gender": null,
"graduated_year": null
},
{
"roll_nuber": 5,
"first_name": "Berlin Heart Completes Enrollment in the EXCOR Pediatric Ventricular Assist Device (VAD) Post Approval Study",
"last_name": null,
"gender": null,
"graduated_year": null
},
{
"roll_nuber": 6,
"first_name": "Futura Mobility Enters into Telemedicine Partnership with REACH Health",
"last_name": null,
"gender": null,
"graduated_year": null
},
{
"roll_nuber": 7,
"first_name": "Harvard SEAS Engineers Develop Portable NMR Spectrometers",
"last_name": null,
"gender": null,
"graduated_year": null
}
]
}

Try to run below code once

 if(!$ids) 
            return "Please enter a valid student id";

        $studentIds = explode(':', $ids);

        $students = News::whereIn('id', $studentIds)->get();
        $data = [];
        if(!$students){
            return "No Students are found with this . '$studentId' .";
        }else{

            foreach ($students as $student) {
                $studentData=[];
        // $data[$studentId] = [];

                $studentData['roll_nuber'] = $student->roll_number;
                $studentData['first_name'] = $student->first_name;
                $studentData['last_name'] = $student->last_name;
                $studentData['gender'] = $student->gender;
                $studentData['graduated_year'] = $student->graduated_year;
                array_push($data, $studentData);
            }
        }

        return response(['success' => true, 'data' => $data], 200);
deepu07's avatar
Level 11

yeah but I want display include ids

"success": true,
"data": [
"id" :1 {
"roll_nuber": 4,
"first_name": "FDA Approves MEDICREAs K-JAWS(R",
"last_name": null,
"gender": null,
"graduated_year": null
},
"id" :2 {
"roll_nuber": 5,
"first_name": "Berlin Heart Completes Enrollment in the EXCOR Pediatric Ventricular Assist Device (VAD) Post Approval Study",
"last_name": null,
"gender": null,
"graduated_year": null
},
"id" :3 {
"roll_nuber": 6,
"first_name": "Futura Mobility Enters into Telemedicine Partnership with REACH Health",
"last_name": null,
"gender": null,
"graduated_year": null
},
"id" :4 {
"roll_nuber": 7,
"first_name": "Harvard SEAS Engineers Develop Portable NMR Spectrometers",
"last_name": null,
"gender": null,
"graduated_year": null
}
]
}```
Nagraj722's avatar

You can add id's to array like

   foreach ($students as $student) {
                $studentData=[];
        // $data[$studentId] = [];
          $studentData['id'] = $student->id;
                $studentData['roll_nuber'] = $student->roll_number;
                $studentData['first_name'] = $student->first_name;
                $studentData['last_name'] = $student->last_name;
                $studentData['gender'] = $student->gender;
                $studentData['graduated_year'] = $student->graduated_year;
                array_push($data, $studentData);
            }

and change news table to students table

Please or to participate in this conversation.