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
[NEW] Building a Typical Laravel SaaS
8 lessons
55 min
Laravel Modules and DDD
16 lessons
1 h 59 min
Laravel 12 For Beginners: Your First Project
15 lessons
1 h 32 min