# WhereAll() and WhereAny()  in laravel 11

In Laravel 11, the Query Builder introduces two powerful functions: `whereAll()` and `whereAny()`, anticipated to see widespread adoption. Sometimes, you might need to impose identical conditions on multiple columns in a database query. For instance, you may wish to fetch all entries where any or all column in a specified list matches a certain pattern. Utilizing the SQL `LIKE` operator, these functions become essential tools in query construction.

## WhereAll()

The `whereAll` method in laravel allows you to fetch records where all specified columns meet a particular condition. For instance, if we need to fetch all the contents from the `blogs` table where title and description match the laravel keyword. We can use this as:

```php
// Using whereAll method
$blogs = Blog::query()
            ->whereAll(['title','description'], 'LIKE', '%laravel%')
            ->get();
```

Furthermore, integrating user search input becomes effortless:

```php
use Illuminate\Http\Request;

public function search(Request $request)
{
    $search = $request->get('q');
    $blogs = Blog::query()
            ->whereAll([
                'title',
                'description',
              ], 'LIKE', '%' . $search. '%')
            ->get();
}
```

In this way you can use the `whereAll` function in query.

## WhereAny()

`WhereAny` serves as the counterpart to above implementation. While `whereAll` requires all specified columns to meet a condition for data retrieval, `whereAny` only necessitates one column to match the condition. Lets rewrite the above case for this case:

```php
// Using whereAny method
$blogs = Blog::query()
            ->whereAny(['title','description'], 'LIKE', '%laravel%')
            ->get();
```

Implement user search input as:

```php
use Illuminate\Http\Request;

public function search(Request $request)
{
    $search = $request->get('q');
    $blogs = Blog::query()
            ->whereAny([
                'title',
                'description',
              ], 'LIKE', '%' . $search. '%')
            ->get();
}
```

In this way you can implement the whereAny function on query.

This is not only changing the function from All to Any, but this will impact on SQL Query. You can see use the difference between these by generating the sql from the above as:

```php
// To dubug and see the SQL of below query
$blogs = Blog::query()
            ->whereAny(['title','description'], 'LIKE', '%laravel%')
            ->ddRawSql();
```

For more descriptive implementation you can always visit the [official documentation](https://laravel.com/docs/11.x/queries#where-any-all-clauses).

## All code

```php
// Using whereAll method
$blogs = Blog::query()
            ->whereAll(['title', 'description'], 'LIKE', '%laravel%')
            ->get();

// Using whereAny method
$blogs = Blog::query()
            ->whereAny(['title', 'description'], 'LIKE', '%laravel%')
            ->get();

// Implementing with request search data
use Illuminate\Http\Request;

public function search(Request $request)
{
    $search = $request->get('q');

    // Using whereAll method
    $blogs = Blog::query()
            ->whereAll(['title', 'description'], 'LIKE', '%' . $search. '%')
            ->get();

    // Using whereAny method
    $blogs = Blog::query()
            ->whereAny(['title', 'description'], 'LIKE', '%' . $search. '%')
            ->get();
}
```

Happy Coding !!
