Laravel validation using IN or ENUM Values? [SOLVED]


Author: Steve Alila
Reviewer: Deepak Prasad

Welcome to this insightful guide on using IN or ENUM values for validation in Laravel applications. Validation is a crucial aspect of web development, ensuring that user inputs meet specific criteria and maintain the integrity and security of your application. Laravel provides a powerful validation system, making it easy to enforce various validation rules on incoming data.

In this article, we will explore how to use the "laravel validate in" rule and ENUM values to create efficient and effective validation logic for your Laravel projects. We will discuss the differences between the two methods, their respective use cases, and how to implement them in your Laravel application. By following this guide, you will gain a deeper understanding of Laravel's validation system and learn how to harness the power of IN and ENUM values for creating reliable and secure web applications.

So, let's dive into the world of Laravel validation and learn how to use IN or ENUM values to enhance the security and functionality of your projects!


Laravel IN Validation

Laravel IN validation is a validation rule that allows you to check whether a value is included in a given array of values. This validation rule is commonly used when you want to ensure that user input is selected from a predefined set of values.

In Laravel, you can use the in validation rule by specifying the valid values as an array. The in validation rule can be used with a variety of input types, including strings, numbers, and arrays. It is also useful when you need to validate multiple fields with the same set of valid values.

Assume you are registering scholars for an event. You only want to register an undergraduate or a graduate. You collect the details via a form and submit to the store method of the AttendantController file found in the app/Http/Controllers/AttendantController.php file.

    public function store(Request $request)
        $attendant = $request->validate([
            'name' => 'required',
            'education_level' => 'required|in:undergraduate,graduate',

        return redirect('/');

The validate() method is called on the $request object, which is an instance of the Illuminate\Http\Request class. This method takes an array of validation rules as its parameter. In this example, the validation rules array includes two rules.

The first rule is for the name input field, which is required. This means that the value of the name input field must be present and cannot be empty or null.

Use Laravel validate in


The second rule is for the education_level input field. It is also required and uses the in validation rule. The in rule checks whether the value of the education_level field is included in the array of valid values, which in this case are "undergraduate" and "graduate".

If the value of education_level is not one of these two options, the validation will fail. If the validation passes for both input fields, the validated input data is stored in the $attendant variable.


Laravel Validation by ENUM Values

Using enum-based validation rules in Laravel provides a more robust and maintainable way to validate input data against a predefined set of options. It relies on the enum class to define the valid options. 

Note: Enums work in PHP 8.1 and above.

The following code illustrates how to use an enum-based validation rule in Laravel with the help of the built-in Illuminate\Validation\Rules\Enum class.

use App\Enums\EducationLevel;
use Illuminate\Validation\Rules\Enum;
    'education_level' => [new Enum(EducationLevel::class)],

First, we import the App\Enums\EducationLevel enum class. It contains a list of valid options for the education_level input field.

Secondly, we create a new instance of the Enum validation rule, with the EducationLevel::class enum class passed as its parameter. This tells Laravel to validate the education_level input field against the options defined in the EducationLevel enum class.

Finally, we pass the Enum validation rule to the validate() method, which performs the validation on the input data.

The enum class can be defined in your application and can contain any number of valid options. For instance, we have defined the enum class in app/Enums/EducationLevel.php file.

namespace App\Enums;

enum EducationLevel: string {
    case UNDERGRADUATE = 'undergraduate';
    case GRADUATE = 'graduate';

We have defined an enum in a Laravel application using PHP's built-in enum type. We start by declaring the namespace App\Enums, which is a common convention for organizing enum classes in Laravel applications.

Next, we define the EducationLevel enum class using the enum keyword. The enum class represents a set of valid options for the education level field. The : string type declaration specifies that the enum values should be treated as strings.

We have defined two cases inside the  EducationLevel enum class: UNDERGRADUATE and GRADUATE. These cases represent the valid options for the education level field, and their corresponding string values are 'undergraduate' and 'graduate', respectively.

Laravel validation using IN or ENUM Values? [SOLVED]


Compare validation using Laravel IN Vs ENUM Values

IN Validation is a simple and quick way to validate input data against a list of comma-separated values. On the other hand, Validation by ENUM Values provides better maintainability and data integrity by centralizing the definition of valid options in an enum class. Here are some of the main differences between the two approaches.

Parameter Laravel IN Validation ENUM Validation
Definition A built-in Laravel validation rule using a predefined list of values for validation. A custom MySQL data type that validates input against a defined enum class with a fixed set of allowed values.
Implementation More straightforward, requiring only a comma-separated list of valid options in the validation rule. Requires defining an enum class to represent valid options for the input field.
Maintainability Modifying the list of valid options may lead to scattered changes across the application. Provides better maintainability as changes to the valid options list are reflected automatically in all instances where the enum is used.
Data Integrity Provides basic validation against a list of comma-separated values. Offers better data integrity by validating input against values defined in the enum class.
Flexibility Can be used with any list of comma-separated values. Limited to the values defined in the enum class.
Database Dependency Independent of the database, providing greater portability across different database systems. Dependent on the database schema, with allowed values defined within the table structure.
Performance Depends on the Laravel application and the number of allowed values. Slightly faster due to validation at the database level, limiting the need for additional application-level validation.


Key Takeaway

Laravel provides two main techniques for validating input data against a predefined set of options: Laravel validate in and Validation by ENUM Values. IN Validation is a simple and quick way to validate input data against a list of comma-separated values. On the other hand, Validation by ENUM Values provides better maintainability and data integrity by centralizing the definition of valid options in an enum class.

The choice between the two approaches depends on the specific needs of your application. Laravel IN Validation is suitable for simple and static validation requirements, whereas Validation by ENUM Values suits complex or frequently changing lists of valid options. Validation by ENUM Values also provides better maintainability and reduces the risk of scattered changes across the application.

Both techniques are valuable tools in the Laravel developer's toolkit, and it's essential to understand when to use each one effectively. Regardless of your chosen technique, always ensure that your input data is appropriately validated to improve your application's quality, reliability, and security.



Laravel IN Validation or Validation by ENUM Values


Views: 361
Steve Alila

Steve Alila

He specializes in web design, WordPress development, and data analysis, with proficiency in Python, JavaScript, and data extraction tools. Additionally, he excels in web API development, AI integration, and data presentation using Matplotlib and Plotly. You can connect with him on his LinkedIn profile.

Can't find what you're searching for? Let us assist you.

Enter your query below, and we'll provide instant results tailored to your needs.

If my articles on GoLinuxCloud has helped you, kindly consider buying me a coffee as a token of appreciation.

Buy GoLinuxCloud a Coffee

For any other feedbacks or questions you can send mail to

Thank You for your support!!

Leave a Comment