01/06/2026
Title:
Stop Returning Raw Eloquent Models From Laravel APIs
Post:
A common Laravel mistake is exposing Eloquent models directly in API responses. It works fast, but it leaks internal fields, creates inconsistent payloads, and makes versioning painful later.
Use API Resources to control exactly what your frontend gets. They let you shape response data, hide sensitive attributes, and keep your API stable as your database evolves.
This becomes especially important when working with mobile apps, Next.js frontends, or external integrations where response contracts must stay predictable.
Code Example (if applicable):
php
use App\Http\Resources\UserResource;
use App\Models\User;
Route::get('/users/{user}', function (User $user) {
return new UserResource($user);
});
php
// app/Http/Resources/UserResource.php
namespace App\Http\Resources;
use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\JsonResource;
class UserResource extends JsonResource
{
public function toArray(Request $request): array
{
return [
'id' => $this->id,
'name' => $this->name,
'email' => $this->email,
'created_at' => $this->created_at->toISOString(),
];
}
}
Quick Tip:
If your API response changes often, wrap every model in a Resource now — it saves painful refactors later.
Hashtags: