0

I am trying to insert two different array into my database into two different column using laravel but I dont know how to achieve that.I want the course_codes_explode to insert into course_code column while course_name_explode inserts into course_name column.

my code.

    $course_codes_explode = [];
    $course_names_explode = [];

    $course_codes = [];
    $course_codes = $request->get('courses_codes');

    $course_names =[];
    $course_names = $request->get('course_names');
     $request->get('school_type');



    for ($k=0; $k<count($course_codes); $k++){
        array_push( $course_codes_explode, explode(",", $course_codes[$k]));
        array_push($course_names_explode, explode(",", $course_names[$k]));
    }

    for($j=0; $j< count($course_codes_explode); $j++){
         OtherSchoolsCourses::create([
            'school_id' => $school_id,
            'course_id' => Str::random(20),
            'course_name' => $course_names_explode[$j],
            'course_code' => $course_codes_explode[$j]
         ]);
    }     

course code array
array:2 [
0 => array:2 [
0 => "NUR123"
1 => "NUR178"
]
1 => array:1 [
     0 => "NUR212"
   ]
]

course name array
array:2 [
 0 => array:2 [
   0 => "Nursing Culture"
   1 => "Nursing Values"
]
1 => array:1 [
    0 => "Hypermology"
  ]
]

How do I achieve this?

2 Answers 2

1

You can use array_map to merge two exploded strings (with first argument as null - Check out Example 4)

$course_codes = explode(',', $request->get('courses_codes'));
$course_names = explode(',', $request->get('course_names'));
$request->get('school_type');

$courses = array_map(null, $course_codes, $course_names);

foreach($courses as $course){
    $course_code = $course[0];
    $course_name = $course[1];

    OtherSchoolsCourses::create([
            'school_id' => $school_id,
            'course_id' => Str::random(20),
            'course_name' => $course_name,
            'course_code' => $course_code
     ]);
}

You just need to make sure that exploded strings generate arrays of same size.

Hope this helps.

Sign up to request clarification or add additional context in comments.

Comments

0

I was able to solve the problem

    $school_id = Str::random(20);
    $course_id = Str::random(20);

    $course_codes_explode = [];
    $course_names_explode = [];

    $course_codes = [];
    $course_codes = $request->get('courses_codes');

    $course_names =[];
    $course_names = $request->get('course_names');
     $request->get('school_type');


    for ($k=0; $k<count($course_codes); $k++){
        array_push( $course_codes_explode, explode(",", $course_codes[$k]));
        array_push($course_names_explode, explode(",", $course_names[$k]));
    }

    $courses = array_map(null, $course_codes_explode, $course_names_explode);

    foreach($courses as $course){
        $course_code = $course[0];
        $course_name = $course[1];

        for($i=0; $i<count($course_code); $i++){

            OtherSchoolsCourses::create([
                'school_id' => $school_id,
                'course_id' => Str::random(20),
                'course_name' => $course_name[$i],
                'course_code' => $course_code[$i]
            ]);
        }
    }

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.