ViewTeacher.php 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. <?php
  2. namespace App\Filament\Resources\TeacherResource\Pages;
  3. use App\Filament\Resources\TeacherResource;
  4. use App\Models\Teacher;
  5. use Filament\Actions;
  6. use Filament\Resources\Pages\ViewRecord;
  7. class ViewTeacher extends ViewRecord
  8. {
  9. protected static string $resource = TeacherResource::class;
  10. protected string $view = 'filament.resources.teacher.pages.view-teacher';
  11. public function getTitle(): string
  12. {
  13. return '教师详情 - ' . $this->record->name;
  14. }
  15. public function getBreadcrumbs(): array
  16. {
  17. return [
  18. static::getResource()::getUrl('index') => '教师管理',
  19. static::getResource()::getUrl('view', ['record' => $this->record]) => $this->record->name,
  20. ];
  21. }
  22. protected function getHeaderActions(): array
  23. {
  24. return [
  25. Actions\EditAction::make()
  26. ->label('编辑信息')
  27. ->icon('heroicon-o-pencil-square'),
  28. Actions\Action::make('viewStudents')
  29. ->label('查看学生')
  30. ->icon('heroicon-o-users')
  31. ->color('primary')
  32. ->url(fn (Teacher $record) => '/admin/students?tableFilters[teacher_id][value]=' . $record->teacher_id),
  33. ];
  34. }
  35. public function getViewData(): array
  36. {
  37. $teacher = $this->record;
  38. // 加载用户信息,使用正确的关联关系
  39. $user = \App\Models\User::where('id', $teacher->user_id)->first();
  40. $teacher->user = $user;
  41. // 加载学生数量
  42. $studentsCount = $teacher->students()->count();
  43. // 加载考试数量
  44. $examCount = \App\Models\Paper::where('teacher_id', $teacher->teacher_id)->count();
  45. return [
  46. 'teacher' => $teacher,
  47. 'studentsCount' => $studentsCount,
  48. 'examCount' => $examCount,
  49. ];
  50. }
  51. }