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

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.