diff --git a/app/Http/Livewire/Tables/LecturerTable.php b/app/Http/Livewire/Tables/LecturerTable.php index f15d0743..c7d890f2 100644 --- a/app/Http/Livewire/Tables/LecturerTable.php +++ b/app/Http/Livewire/Tables/LecturerTable.php @@ -17,6 +17,7 @@ class LecturerTable extends DataTableComponent public function configure(): void { $this->setPrimaryKey('id') + ->setDefaultSort('courses_events_count', 'desc') ->setThAttributes(function (Column $column) { return [ 'class' => 'px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider dark:bg-gray-800 dark:text-gray-400', @@ -62,7 +63,9 @@ class LecturerTable extends DataTableComponent ->collapseOnMobile(), Column::make('') ->label( - fn($row, Column $column) => view('columns.lectures.action')->withRow($row)->withCountry($this->country) + fn($row, Column $column) => view('columns.lectures.action') + ->withRow($row) + ->withCountry($this->country) ), ]; @@ -73,13 +76,15 @@ class LecturerTable extends DataTableComponent return Lecturer::query() ->withCount([ 'courses', + 'coursesEvents', 'libraryItems', ]); } public function lecturerSearch($id, $event = true) { - $lecturer = Lecturer::query()->find($id); + $lecturer = Lecturer::query() + ->find($id); if ($event) { return to_route('school.table.event', [ diff --git a/app/Models/Lecturer.php b/app/Models/Lecturer.php index 59d6e1a6..86f3a385 100644 --- a/app/Models/Lecturer.php +++ b/app/Models/Lecturer.php @@ -6,6 +6,7 @@ use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\HasMany; +use Illuminate\Database\Eloquent\Relations\HasManyThrough; use Spatie\Image\Manipulations; use Spatie\MediaLibrary\HasMedia; use Spatie\MediaLibrary\InteractsWithMedia; @@ -93,6 +94,11 @@ class Lecturer extends Model implements HasMedia return $this->hasMany(Course::class); } + public function coursesEvents(): HasManyThrough + { + return $this->hasManyThrough(CourseEvent::class, Course::class); + } + public function libraryItems(): HasMany { return $this->hasMany(LibraryItem::class);