как вставить в другой массив в разные столбцы базы данных, используя laravel - PullRequest
0 голосов
/ 15 января 2020

Я пытаюсь вставить два разных массива в свою базу данных в два разных столбца, используя laravel, но я не знаю, как этого добиться. Я хочу, чтобы course_codes_explode вставлял в столбец course_code, а course_name_explode вставлял в столбец course_name.

мой код.

    $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"
  ]
]

Как мне этого добиться?

Ответы [ 2 ]

1 голос
/ 15 января 2020

Вы можете использовать array_map для объединения двух разнесенных строк (с первым аргументом как null - посмотрите пример 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
     ]);
}

Вам просто нужно убедиться, что взорванные строки генерируют массивы одинакового размера.

Надеюсь, это поможет.

0 голосов
/ 15 января 2020

Я смог решить проблему

    $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]
            ]);
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...