Maison  >  Questions et réponses  >  le corps du texte

Laravel - Créer des tableaux d'objets et des tableaux en PHP

J'essaie de créer un tableau d'objets dans Laravel php. Jusqu'à présent, j'y suis parvenu.

Lorsque je renvoie le tableau, j'obtiens la réponse, j'ai ajouté l'image pour plus de clarté.

J'obtiens ce résultat

Je veux créer une réponse comme celle-ci...

[
    {
        "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粉298305266176 Il y a quelques jours381

répondre à tous(1)je répondrai

  • P粉921130067

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

    Vous pouvez essayer le code suivant :

    $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;

    répondre
    0
  • Annulerrépondre