No Comments

Using the “Conditionable” Trait in Laravel

Reading Time: 3 minutes

Laravel, a powerful PHP framework, is known for its elegant syntax and robust feature set, enabling developers to build web applications swiftly and efficiently. Among its many features, the ‘Conditionable’ trait, introduced in Laravel 8.69, stands out as a versatile tool that allows developers to execute methods in a more readable and maintainable way conditionally. This blog will explore the ‘Conditionable’ trait, its purpose, usage, and practical examples to illustrate how it can enhance your Laravel applications.

What is the Conditionable Trait?

The Conditionable’ trait is a utility that enables you to conditionally invoke methods on objects. This means you can chain methods or execute certain logic based on conditions, making your code cleaner and more expressive. The trait provides two primary methods:

  • ‘when()’
  • ‘unless()’

Both methods allow you to execute a callback if a given condition is true (‘when’) or false (‘unless’).0.000000

Why Use the Conditionable Trait?

Traditional conditional statements (if-else) can often lead to verbose and cluttered code, especially when dealing with method chains or complex logic. The Conditionable’ trait helps streamline this by embedding the conditional logic within the method chain itself. This improves readability and aligns with Laravel’s expressive syntax philosophy.

Integrating the Conditionable Trait

TheConditionable’ trait can be integrated into any class. Let’s start with a simple example to illustrate its usage.

Example: Simple Integration

Consider a class Order where we might want to apply a discount based on certain conditions.

In this example, the Order’ class uses the Conditionable’ trait. Now, let’s see how we can use the when’ and unless’ methods.

Here, the when’ method applies a $10 discount if the customer is a VIP, and the unless’ method applies a $5 discount if there is no seasonal discount.

Practical Applications

The Conditionable’ trait can be extremely useful in various real-world scenarios. Let’s explore some practical applications.

1. Conditional Query Building

In a Laravel application, building complex queries conditionally is a common task. The Conditionable’ trait simplifies this significantly.

In this example, the query will filter users based on their status’ andemail_verified_at’ attributes conditionally.

2. Configuring Services Based on Environment

In a Laravel application, you might need to configure services differently based on the environment. The Conditionable’ trait can help streamline this process.

Here, the service configuration is adjusted based on whether the application is running in a production environment.

3. Form Request Validation

Laravel’s form requests are a powerful feature for handling validation. The Conditionable’ trait can be used to conditionally add validation rules.

In this example, an additional admin_code’ validation rule is added conditionally if the role is admin’.


The Conditionable’ trait in Laravel is a powerful tool that can greatly enhance the readability and maintainability of your code. Embedding conditional logic within method chains, allows you to write more expressive and concise code. Whether you’re building complex queries, configuring services, or validating form requests, the Conditionable’ trait provides a clean and efficient way to handle conditional operations.

Incorporate the Conditionable’ trait in your Laravel projects to leverage its full potential and experience the elegance of conditional method execution. 

You might also like