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

chrisostomKaweza's avatar

saving multiple students in database at once but problem is it only save one last student and how can i create a loop through all stuent and save them in database at once?

i'm filling students data in database and i want to take the input data of more than one student at the once and save in database:

here is my controller perfoming the action:


<?php
namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Testtype;
use App\Student;
use App\Testresult;
use App\School;
use App\Classe;
use App\Subject;
use App\Semister;


class StudentdataController extends Controller
{
    public function index(){

 
   $schools=School::all();
  $classes=Classe::all();
  $subjects=Subject::all();
  $semisters=Semister::all();
   $tests=Testtype::all();
   return view('Information.Studentdata',compact('tests','schools','classes','subjects','semisters'));
    }
      public function numeric($length){
         
            $chars = "1234567890";
            $clen   = strlen( $chars )-1;
            $id  = '';

            for ($i = 0; $i < $length; $i++) {
                  $id .= $chars[mt_rand(0,$clen)];
          }

           return ($id);

      }
        public function store(){

            $this->validate(request(),

              [  'test'=>'required',
                 'firstname'=>'required',
                 'lastname'=>'required',
                 'target'=>'required',
                 'qn1'=>'required',
                 'qn2'=>'required',
                 'qn3'=>'required',
                 'qn4'=>'required',
                 'qn5'=>'required',
                 'qn6'=>'required',
                 'qn7'=>'required',
                 'qn8'=>'required',
                 'qn9'=>'required',
                 'qn10'=>'required'

              ]
                );
                     $testtype=Testtype::findorfail(request('test'));
               
                    
                       $parent=Classe::find(1);
                       $school=School::findorfail(request('school'));
                      $classe=Classe::findorfail(request('class'));
                       $subject=Subject::findorfail(request('subject'));
                     $semister=Semister::findorfail(request('semister'));

                       $studentnumber=$school->name."-".$classe->id."-".$this->numeric(4);                     
                      $students=Student::all(); 
                                         
                   $student=Student::create([

                    'firstname'=>request('firstname'),
                    'lastname'=>request('lastname'),
                    'classe_id'=>$classe->id,
                    'school_id'=>$school->id,
                    'parent_id'=>$parent->id,
                     'number'=> $studentnumber
                    ]);
                        
                    

                       $studentresult=Testresult::create([
                        
                         'testtype_id'=>$testtype->id,
                          'student_id'=>$student->id,
                          'semister_id'=>$semister->id,
                          'subject_id'=>$subject->id,
                           'target'=>request('target'),
                           'Q1'=>request('qn1'),
                           'Q2'=>request('qn2'),
                           'Q3'=>request('qn3'),
                           'Q4'=>request('qn4'),
                           'Q5'=>request('qn5'),
                           'Q6'=>request('qn6'),
                           'Q7'=>request('qn7'),
                           'Q8'=>request('qn8'),
                           'Q9'=>request('qn9'),
                           'Q10'=>request('qn10')


                        ]);
                                
                         
                         $studentdataresults=\DB::table('students')

                                       ->join('testresults','students.id','=','testresults.student_id')
                                     
                                    ->select('students.*','students.firstname','students.lastname','testresults.target','testresults.Q1','testresults.Q2','testresults.Q3','testresults.Q4','testresults.Q5','testresults.Q6','testresults.Q7','testresults.Q8','testresults.Q9','testresults.Q10')
                                      ->get();

                                   
                 return view('Information.studentresults',compact('studentdataresults'));


        }


    } 
0 likes
3 replies
RamjithAp's avatar

Your controller

Use App/Student;

public funtion save(Request as $request){

$students = $request->all();

DB::table('students')->insert($students );

OR

Student::fill($students)->save();

}
chrisostomKaweza's avatar

its an option can either fill multiple students at the same time or one student at a time

Please or to participate in this conversation.