From 4a87232dae512a5e46614a95c2f228b7855ad53e Mon Sep 17 00:00:00 2001 From: Dr Masroor Ehsan Date: Sun, 5 Jan 2025 13:14:02 +0600 Subject: [PATCH] N+1 --- app/DAL/Studies/WorklistBase.php | 6 ++++-- app/Models/Study.php | 6 ++++++ app/Providers/AppServiceProvider.php | 7 +++++++ 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/app/DAL/Studies/WorklistBase.php b/app/DAL/Studies/WorklistBase.php index 37894cc..1c54ad0 100644 --- a/app/DAL/Studies/WorklistBase.php +++ b/app/DAL/Studies/WorklistBase.php @@ -159,10 +159,12 @@ public function setReportDate(string $from, ?string $to = null): self protected function getStudiesQuery(): Builder { if ($this->archived === null) { - return Study::active(); + $q = Study::active(); + } else { + $q = Study::query(); } - return Study::query(); + return $q->with(['readingPhysician', 'assignedPhysician']); } protected function applySort(Builder $query): Builder diff --git a/app/Models/Study.php b/app/Models/Study.php index 5381112..31cf1a1 100644 --- a/app/Models/Study.php +++ b/app/Models/Study.php @@ -103,6 +103,11 @@ public function readingPhysician(): BelongsTo return $this->belongsTo(User::class, 'reporting_physician_id'); } + public function assignedPhysician(): BelongsTo + { + return $this->belongsTo(User::class, 'assigned_physician_id'); + } + public function getReportStatusLedAttribute(): string { $color = match ($this->report_status) { @@ -230,6 +235,7 @@ public function toArray(): array return array_merge(parent::toArray(), [ 'disk_size_human' => human_filesize($this->disk_size), 'reader_name' => $this->readingPhysician?->display_name, + 'assigned_physician_name' => $this->assignedPhysician?->display_name, 'reader_photo' => $this->readingPhysician?->profile_photo_url, 'report_status_led' => $this->getReportStatusLedAttribute(), 'priority_icon' => $this->getPriorityIcon(), diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index 627a4c1..9898581 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -2,6 +2,7 @@ namespace App\Providers; +use Illuminate\Database\Eloquent\Model; use Illuminate\Pagination\Paginator; use Illuminate\Support\Facades\Vite; use Illuminate\Support\ServiceProvider; @@ -21,6 +22,7 @@ public function register(): void */ public function boot(): void { + $this->configureModels(); Paginator::useBootstrapFive(); Vite::useStyleTagAttributes(function (?string $src, string $url, ?array $chunk, ?array $manifest) { if ($src !== null) { @@ -33,4 +35,9 @@ public function boot(): void return []; }); } + + private function configureModels(): void + { + Model::shouldBeStrict(! $this->app->isProduction()); + } }