How to Get A and (B or C) in Complex Condition Search in Laravel
Table Of Contents
This article summarizes how to get A and (B or C) in complex condition search in Laravel.
At the beginning
In Laravel, it is possible to implement condition searches using where or orWhere,
In this article,
I will write about how to get users who are A and (B or C).
Specifically,
A: Email verified
B: Belongs to category 1
C: Belongs to category 5Let's retrieve these users.
It means to retrieve users who are
"Email verified"
"Belong to category 1 or 5".
Things to know beforehand
How to perform AND search with multiple conditions in Laravel
How to perform OR search using orWhere in Laravel
Conclusion
Controller
$users = User::whereNotNull('email_verified_at')
->where(function($query){
$query->where('category_id',1)
->orWhere('category_id',5);
})
->get();Explanation
Write the where condition to retrieve only users who have verified their email
->whereNotNull('email_verified_at')Write the where condition for category 1 or category 5
->where(function($query){
$query->where('category_id',1)
->orWhere('category_id',5);
})Let's delve into this part.
It may look a bit complicated,
Since it is A and (B or C),
The part connecting A and (B or C) is written in where
// This part
->where(function($query){What is $query?
$query is an argument used inside the function, so $q is also fine, but I think it's good to think of it as inheriting the search conditions inside the function.
Write (B or C) within the function
$query->where('category_id',1)
->orWhere('category_id',5);Summary
I tried to cover complex condition search in Laravel.
By writing these multiple conditions, various condition searches (such as selecting multiple checkboxes) are possible.
However, there is also a method to specify multiple conditions in an array using whereIn, so consider if you can implement it with whereIn for the same column.
I hope this is helpful for someone.
That's all!
Related articles
How to perform AND search with multiple conditions in Laravel




