Welcome to Laranepal - Nepal's Laravel Community!

How To Globally Remove Null Values From Laravel 12 Api Resources

Published on December 27, 2025 by

How to Globally Remove Null Values from Laravel 12 API Resources

How to Globally Remove Null Values from Laravel 12 API Resources

When building APIs with Laravel 12, clean and consistent JSON responses are essential. One common issue developers face is dealing with null values in API resources. Repeating filtering logic in every resource quickly becomes messy and violates the DRY (Don’t Repeat Yourself) principle.

This article walks through a clean and scalable solution: creating a custom base resource that automatically removes null values from all API responses.


🚀 The Problem with Repeating Null Filters

By default, Laravel’s JsonResource includes all attributes—even those with null values. This can result in:

  • Bloated API responses
  • Inconsistent data output
  • Repetitive filtering logic in every resource

Manually filtering null values inside each resource works, but it’s not maintainable in the long run.


✅ The Solution: A BaseJsonResource

The best approach is to create a custom base resource that handles null filtering globally. All your API resources will then extend this base class.


🔹 Step 1: Create a Base Resource

Create a new file at: app/Http/Resources/BaseJsonResource.php

<?php
 
namespace App\Http\Resources;
 
use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\JsonResource;
 
class BaseJsonResource extends JsonResource
{
/**
* Remove null values from resource output.
*/
public function toArray(Request $request): array
{
$data = parent::toArray($request);
 
return collect($data)
->filter(fn ($value) => !is_null($value))
->all();
}
}

This class overrides toArray() and automatically strips out all null values before returning the response.


🔹 Step 2: Extend the Base Resource

Instead of extending JsonResource, extend BaseJsonResource in your resources.

 
<?php
 
namespace App\Http\Resources;
 
class UserResource extends BaseJsonResource
{
public function toArray($request): array
{
return [
'id' => $this->id,
'email' => $this->email,
'firstname' => $this->firstname,
'lastname' => $this->lastname,
'nickname' => $this->nickname,
'gender' => $this->gender,
'roles' => $this->getRoleNames(),
'dob' => $this->dob,
'height' => $this->height,
'weight' => $this->weight,
'created_at' => $this->created_at,
'updated_at' => $this->updated_at,
];
}
}

Any attribute that is null will now be automatically excluded from the API response.


🔹 Step 3: Use the Resource

<?php
 
return new UserResource($user);

No extra filtering logic is needed.


🎯 Benefits of This Approach

  • DRY Code – No repeated filtering logic
  • Consistency – All resources behave the same
  • Scalability – Easy to modify filtering rules later
  • Cleaner APIs – Smaller, more readable responses

You can later extend this logic to remove empty strings or empty arrays — all from one place.


🏁 Conclusion

Creating a BaseJsonResource is the cleanest and most maintainable way to globally hide null values in Laravel 12 API resources. It keeps your codebase organized, your API responses clean, and your future self happy.


Dinesh Uprety

Senior Software Engineer • Writer @ Laranepal • PHP, Laravel, Livewire, TailwindCSS & VueJS • CEO @ Laranepal & Founder @ laracodesnap

Filed in:

Discussion

Login or register to comment or ask questions

roshan
roshan

Claude le ramrai gardaixa hai, claude lai inherit garum, sapai public github repo ko data crawl garera.

Dinesh Uprety
Dinesh Uprety

resource pugxa ra sapai public github repo ko data crawl garna

Join the conversation

Sign in to share your thoughts with the community.