You can avoid N+1 queries in API resources by using the whenLoaded() method.
This will only append the department if it’s already loaded in the Employee model.
Without whenLoaded() there is always a query for the department
class EmployeeResource extends JsonResource{ public function toArray($request): array { return [ 'id' => $this->uuid, 'fullName' => $this->full_name, 'email' => $this->email, 'jobTitle' => $this->job_title, 'department' => DepartmentResource::make($this->whenLoaded('department')), ]; }}
Tip given by @mmartin_joo
Enjoyed This Tip?
Get access to all premium tutorials, video and text courses, and exclusive Laravel resources. Join our community of 10,000+ developers.
Recent Courses
Filament 4 From Scratch
28 lessons
2 h 25 min
NativePHP: Build Mobile App with Laravel
11 lessons
2 h 2 min read
Laravel HTTP Client and 3rd-Party APIs
7 lessons
50 min