StudentsImport.php 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. <?php
  2. namespace App\Imports;
  3. use App\Models\Course;
  4. use App\Models\Student;
  5. use App\Models\StudentCourse;
  6. use App\Models\StudentCourseTeacher;
  7. use App\Models\Teacher;
  8. use Carbon\Carbon;
  9. use Illuminate\Support\Facades\Log;
  10. use Illuminate\Support\Collection;
  11. use Maatwebsite\Excel\Concerns\ToArray;
  12. use Maatwebsite\Excel\Concerns\ToCollection;
  13. class StudentsImport implements ToArray
  14. {
  15. public function array(array $rows)
  16. {
  17. foreach($rows as $key => $row)
  18. {
  19. if($key == 0) continue;
  20. $student = Student::create([
  21. 'name' => $row[0],
  22. 'phone' => $row[1],
  23. 'remark' => $row[6],
  24. ]);
  25. $course = Course::firstOrCreate([
  26. 'name' => $row[2]
  27. ]);
  28. $assign_teacher = $row[5] == '全部' ? 1 : 2;
  29. $duration = null;
  30. if(!empty($row[3]) && !empty($row[4]) && $row[4] > $row[3]) {
  31. $duration = Carbon::createFromTimestamp(strtotime($row[3]))->diffInDays(Carbon::createFromTimestamp(strtotime($row[4])));
  32. }
  33. $student_course = StudentCourse::create([
  34. 'student_id' => $student->id,
  35. 'course_id' => $course->id,
  36. 'apply_date' => $row[3],
  37. 'duration' => $duration,
  38. 'assign_teacher' => $assign_teacher
  39. ]);
  40. if($assign_teacher == 2) {
  41. $teacher_names = explode(',', $row[5]);
  42. foreach($teacher_names as $teacher_name) {
  43. $teacher = Teacher::firstOrCreate([
  44. 'name' => $teacher_name
  45. ]);
  46. StudentCourseTeacher::create([
  47. 'student_course_id' => $student_course->id,
  48. 'teacher_id' => $teacher->id,
  49. 'student_id' => $student->id,
  50. ]);
  51. }
  52. }
  53. }
  54. }
  55. }