Laravel Tutorials

Filter Model Attributes with Laravel's New except() Method

Published
Filter Model Attributes with Laravel's New except() Method image

Laravel introduces the Model::except() method to complement its existing only() method, offering a more intuitive way to exclude specific attributes when working with Eloquent models.

When handling Eloquent models, retrieving a subset of attributes is a common requirement for views or API responses. Laravel has provided the only() method for whitelisting specific attributes, but sometimes it's more logical to work from the opposite direction - keeping everything except certain attributes. The new except() method makes this approach straightforward and expressive:

$attributes = $user->except('password', 'remember_token');
// Returns all attributes except password and remember_token

This method particularly shines when preparing models for display or serialization while excluding sensitive information:

class AccountController extends Controller
{
public function profile(User $user)
{
// Return all user data except sensitive fields
return view('accounts.profile', [
'userDetails' => $user->except('password', 'remember_token', 'two_factor_recovery_codes')
]);
}
 
public function settings(Request $request)
{
$user = $request->user();
 
// Return all user attributes except internal or sensitive ones
return response()->json(
$user->except('id', 'password', 'remember_token', 'login_attempts', 'created_at', 'updated_at')
);
}
}

The method works seamlessly with relationships and complex data structures:

class OrderController extends Controller
{
public function receipt(Order $order)
{
// Load the order with its relationships
$order->load('items', 'customer', 'payments');
 
// Exclude internal tracking data
$orderData = $order->except('internal_tracking_id', 'risk_score', 'admin_notes');
 
return view('orders.receipt', [
'order' => $orderData
]);
}
}

With the addition of except() alongside the existing only() method, Laravel developers now have a complete and flexible toolkit for retrieving precisely the model attributes needed in any situation, making code more readable and intent clearer.

Harris Raftopoulos photo

Senior Software Engineer • Staff & Educator @ Laravel News • Co-organizer @ Laravel Greece Meetup

Sponsored

laravelcloud logo
Laravel Cloud

Easily create and manage your servers and deploy your Laravel applications in seconds.

Visit Laravel Cloud

The latest

View all →
Securing Filament plugins with Plumb image

Securing Filament plugins with Plumb

Read article
LayaPHP: Self-Hosted Text Classification for PHP and Laravel image

LayaPHP: Self-Hosted Text Classification for PHP and Laravel

Read article
WhenMounted and BigInt Props in Inertia.js v3.8 image

WhenMounted and BigInt Props in Inertia.js v3.8

Read article
Postcodes for Laravel: GB Postcode Lookup and Geography Data image

Postcodes for Laravel: GB Postcode Lookup and Geography Data

Read article
Laravel 14 Adds a defaults() Method to Eloquent Models image

Laravel 14 Adds a defaults() Method to Eloquent Models

Read article
Laravel AI SDK and Laravel MCP Security Fixes: Update Now image

Laravel AI SDK and Laravel MCP Security Fixes: Update Now

Read article