ListPreQuestionCandidates.php 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. <?php
  2. namespace App\Filament\Resources\PreQuestionCandidateResource\Pages;
  3. use App\Filament\Resources\PreQuestionCandidateResource;
  4. use App\Models\PreQuestionCandidate;
  5. use Filament\Resources\Pages\ListRecords;
  6. use Illuminate\Database\Eloquent\Builder;
  7. class ListPreQuestionCandidates extends ListRecords
  8. {
  9. protected static string $resource = PreQuestionCandidateResource::class;
  10. protected function canCreate(): bool
  11. {
  12. return false;
  13. }
  14. protected function getTableQuery(): Builder
  15. {
  16. $query = PreQuestionCandidate::query();
  17. $importId = request()->input('import_id');
  18. $user = auth()->user();
  19. $isAdmin = $user && in_array($user->role, ['super_admin', 'admin'], true);
  20. if (!empty($importId)) {
  21. $query->where('import_id', (int) $importId);
  22. } elseif (!$isAdmin) {
  23. // 非管理员必须通过 import_id 进入,否则不展示任何数据
  24. $query->whereRaw('1=0');
  25. }
  26. // 默认隐藏被新解析覆盖的记录(可通过筛选器查看)
  27. if (!request()->has('tableFilters.status.value')) {
  28. $query->where('status', '!=', PreQuestionCandidate::STATUS_SUPERSEDED);
  29. }
  30. return $query;
  31. }
  32. }