首页 > 解决方案 > 如何使用laravel将不同的数组插入到不同的列数据库中

问题描述

我正在尝试使用 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"
  ]
]

我如何实现这一目标?

标签: phparraysdatabaselaravel

解决方案


您可以使用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
     ]);
}

您只需要确保分解后的字符串生成相同大小的数组。

希望这可以帮助。


推荐阅读