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

serpapi logo
SerpApi

The Web Search API for Your LLM and AI Applications

Visit SerpApi

The latest

View all →
Agent Run Observability in Laravel AI SDK 0.11 image

Agent Run Observability in Laravel AI SDK 0.11

Read article
Debounced Queued Event Listeners in Laravel image

Debounced Queued Event Listeners in Laravel

Read article
Statamic Mailables Viewer Previews Laravel Emails in the Control Panel image

Statamic Mailables Viewer Previews Laravel Emails in the Control Panel

Read article
Laravel Tackle: Run an AI Coding Agent in Your Laravel App image

Laravel Tackle: Run an AI Coding Agent in Your Laravel App

Read article
Queue::forward(): Reroute Laravel Queues in One Place image

Queue::forward(): Reroute Laravel Queues in One Place

Read article
Laravel Read-Through Filesystem: Lazy Storage Migration image

Laravel Read-Through Filesystem: Lazy Storage Migration

Read article