cari

Rumah  >  Soal Jawab  >  teks badan

Laravel - Buat tatasusunan dan tatasusunan objek dalam PHP

Saya cuba mencipta pelbagai objek dalam laravel php. Setakat ini saya telah mencapai ini.

Apabila saya mengembalikan tatasusunan saya mendapat respons, saya menambah imej untuk kejelasan.

Saya mendapat output ini

Nak buat respon macam ni...

[
    {
        "student": "Jaime Thomas",
        "subjects": [
            {
                "subject": "Physics",
                "marks_": 0
            },
            {
                "subject": "Chemistry",
                "marks_": 0
            }
        ]
    },
    {
        "student": "Jaime Dey",
        "subjects": [
            {
                "subject": "Physics",
                "marks_": 0
            },
            {
                "subject": "Chemistry",
                "marks_": 0
            }
        ]
    }
]
$usersData = User::where('user_id', 2)->where("stud_class", $exam_details->exam_class_id)->where("XXXX", $exam_details->exam_branch_id)->get();
            foreach ($exam_data as  $subject) {
                $att_exams =  MODEL::where('XXXXX', $subject->subject_id)
                    ->where('XXXX', $user->id)
                    ->first();
                if ($att_exams) {
                    $marks =  MODEL::where('XXXX', $att_exams->attended_exams_id)->get();
                    $right = 0;
                    $wrong = 0;
                    $total_marks = $marks->sum('XXXX');
                    
                    $total_negative_marks = $wrong * $subject->negative_marks;
                    $subjectsArray[] = array(
                        "subject" => $subject->subject_name,
                        "marks_" => $total_marks - $total_negative_marks,
                    );
                } else {
                    $subjectsArray[] = array(
                        "subject" => $subject->subject_name,
                        "marks_" => 0,
                    );
                }
            }
            $studentsArray["subjects"] = array($subjectsArray);
        }
        return $studentsArray;

P粉298305266P粉298305266270 hari yang lalu504

membalas semua(1)saya akan balas

  • P粉921130067

    P粉9211300672024-03-31 12:35:23

    Anda boleh mencuba kod berikut:

    $studentsArray = [];
            $usersData = User::where('user_id', 2)->where("stud_class", $exam_details->exam_class_id)->where("XXXX", $exam_details->exam_branch_id)->get(['name', 'id']);
            foreach ($usersData as $user) {
                $subjectsArray = [];
                foreach ($exam_data as  $subject) {
                    $att_exams =  MODEL::where('XXXXX', $subject->subject_id)
                        ->where('XXXX', $user->id)
                        ->first();
                    if ($att_exams) {
                        $marks =  MODEL::where('XXXX', $att_exams->attended_exams_id)->get();
                        $right = 0;
                        $wrong = 0;
                        $total_marks = $marks->sum('XXXX');
                        foreach ($marks as $mark) {
                            if ($mark->XXX== 0) {
                                $wrong++;
                            } else {
                                $right++;
                            }
                        }
                        $total_negative_marks = $wrong * $subject->negative_marks;
                        $subjectsArray[] = [
                            "subject" => $subject->subject_name,
                            "marks_" => $total_marks - $total_negative_marks,
                        ];
                    } else {
                        $subjectsArray[] = array(
                            "subject" => $subject->subject_name,
                            "marks_" => 0,
                        );
                    }
                }
                $studentsArray[] = [
                    "student" => $user->name,
                    "subjects" => $subjectsArray
                ];
            }
            return $studentsArray;

    balas
    0
  • Batalbalas