ViewTeacher.php 1.9 KB

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