我想将.csv文件上传到数据库中,但要在3个不同的表中。我的意思是像.csv文件中有三列,然后我想将每一列插入不同的表中。我该怎么做?任何人都可以提供任何示例或想法来进行此操作。
这里是一个示例,如果您想在db
中上传csv文件,请>
public function upload(Request $request){ //upload csv
$file = $request->file('file');
$csvData = file_get_contents($file);
$rows = array_map("str_getcsv", explode("\n", $csvData));
//CSV headers
$header = array_shift($rows);
$escapedHeader=[];
//to converting lowercase and remove spaces
foreach ($header as $key => $value) {
$lheader=strtolower($value);
$escapedItem=preg_replace('/[^a-z]/', '', $lheader);
array_push($escapedHeader, $escapedItem);
}
//storing data to database
foreach($rows as $row) {
if (count($header) != count($row)) {
continue;
}
//This will generate a associate array with headers.
$row = array_combine($escapedHeader, $row);//dd($row);
// if there are 3 tables named - student, course, grade
Student::create([
'fname' => $row['firstname'],
'lname' => $row['lastname'],
]);
Course::create([
'course' => $row['course'],
]);
Grade::create([
'grade' => $row['score'],
]);
}
Session::flash('message', 'CSV file imported!');
return response()->json('success');
}