| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 | 
							- <?php
 
- namespace App\Models;
 
- use Carbon\Carbon;
 
- use function foo\func;
 
- use Illuminate\Database\Eloquent\Model;
 
- use Illuminate\Support\Facades\Log;
 
- class Student extends Model
 
- {
 
-     protected $table = 'students';
 
-     protected $guarded = [];
 
-     public $marry_list;
 
-     public function __construct(array $attributes = [])
 
-     {
 
-         parent::__construct($attributes);
 
-         $this->marry_list = collect([
 
-             ['key' => 1, 'value' => 1, 'show_value' => '未婚'],
 
-             ['key' => 2, 'value' => 2, 'show_value' => '已婚'],
 
- //            ['key' => 3, 'value' => 3, 'show_value' => '离婚'],
 
-         ]);
 
-     }
 
-     public function getMarryList()
 
-     {
 
-         return $this->marry_list;
 
-     }
 
-     public function getBindPhone()
 
-     {
 
-         return $this['bind_phone'] == 2 ? '已绑定' : '未绑定';
 
-     }
 
-     public function getMarry($key = null)
 
-     {
 
-         $key = empty($key) ? $this['marry'] : 1;
 
-         $item = $this->marry_list->where('key', $key)->first();
 
-         return empty($item) ? '未婚' : $item['show_value'];
 
-     }
 
-     public function course()
 
-     {
 
-         return $this->belongsTo('App\Models\Course');
 
-     }
 
-     public function getCheckCardDates()
 
-     {
 
-         return CheckCard::where('student_id', $this['id'])->whereNotNull('begin_date_time')->whereNotNull('end_date_time')->get()->pluck('begin_date_time')->map(function ($item) {
 
-             return substr($item, 0, 10);
 
-         })->unique();
 
-     }
 
-     public function getStudentCourse()
 
-     {
 
-         return StudentCourse::where('student_id', $this['id'])->first();
 
-     }
 
-     public function getCourseInfo()
 
-     {
 
-         $student_course = StudentCourse::where('student_id', $this['id'])->first();
 
-         if(empty($student_course)) {
 
-             return [
 
-                 'course_name' => '',
 
-                 'apply_date' => '',
 
-                 'end_date' => '',
 
-                 'teacher_names' => ''
 
-             ];
 
-         }
 
-         $course = Course::find($student_course->course_id);
 
-         if(empty($course)) {
 
-             $course_name = '';
 
-         } else {
 
-             $course_name = $course->name;
 
-         }
 
-         $apply_date = $student_course->apply_date;
 
-         $end_date = $student_course->computeEndDate();
 
-         $teacher_names = $student_course->getTeacherFullNames();
 
-         return [
 
-             'course_name' => $course_name,
 
-             'apply_date' => $apply_date,
 
-             'end_date' => $end_date,
 
-             'teacher_names' => $teacher_names
 
-         ];
 
-     }
 
-     public function getCourseName()
 
-     {
 
-         $student_course = StudentCourse::where('student_id', $this['id'])->first();
 
-         if(empty($student_course)) return '';
 
-         $course = Course::find($student_course->course_id);
 
-         return empty($course) ? '' : $course->name;
 
-     }
 
-     public function getIsNew()
 
-     {
 
-         $today = Carbon::today();
 
-         $this_week_begin = null;
 
-         while($today->dayOfWeekIso != 1) {
 
-             $today = $today->subDay();
 
-         }
 
-         $this_week_begin = $today->toDateTimeString();
 
-         $this_week_end = $today->addDays(7)->toDateTimeString();
 
-         $tmp = Remark::where([
 
-             ['student_id', '=', $this['id']],
 
-             ['updated_at', '>=', $this_week_begin],
 
-             ['updated_at', '<', $this_week_end],
 
-         ])->first();
 
-         return empty($tmp) ? true : false;
 
-     }
 
-     public function getThisWeekAverageScore(Remark $remark)
 
-     {
 
-         $today = Carbon::today();
 
-         $this_week_begin = null;
 
-         while($today->dayOfWeekIso != 1) {
 
-             $today = $today->subDay();
 
-         }
 
-         $this_week_begin = $today->toDateTimeString();
 
-         return RemarkDetail::where([
 
-             ['remark_id', '=', $remark['id']],
 
-             ['created_at', '>=', $this_week_begin],
 
-         ])->get()->avg('score');
 
-     }
 
- }
 
 
  |