Laravel 9 Eloquent WHERE Like Query Example Tutorial

  Laravel Published:  1 week ago
Laravel 9 Eloquent WHERE Like Query Example Tutorial - TechvBlogs

When you put the search form in your application, you need to use like query to get matched pattern. The LIKE a query is used in a WHERE clause to search for a specified pattern in a column. You can use the LIKE MySQL keyword and % wildcard character with where clause.

In laravel, using whereLike() eloquent method, you can implement laravel where like search query, laravel where like multiple columns and laravel collection with where like.

Example 1: Laravel where Like Query use with Eloquent Model

You can use the LIKE MySQL keyword and % wildcard character with the where clause.

The following example represents, how to use it:

public function index(){
    $users = User::where('name','LIKE',"%{$search}%")->get();
    return $users;                
}

When you dump the above given whereNull query you will get the following SQL query:

SELECT * FROM `users` WHERE `name` LIKE '%search%';

Read Also: Laravel Multiple Where Condition Example

Example 2: Using macros with Like

To define a macro, you simply use the macro static method on the class you want to define the macro to. We need to define a macro for the Eloquent class, so we can extend it like this (in the boot method of the service provider):

Builder::macro('whereLike', function($column, $search) {
  return $this->where($column, 'LIKE', "%{$search}%");
});

The way we can use this macro now is simple:

public function index(){
  return User::whereLike('username', $username)
   ->whereLike('email', $email)
   ->get();
}

Example 3: Laravel whereLike with multiple columns using macros

if you want to search with multiple columns then you have to extend this macro to support multiple columns.

Builder::macro('whereLike', function($columns, $search) {
  $this->where(function($query) use ($columns, $search) {
    foreach(\Arr::wrap($columns) as $column) {
      $query->orWhere($column, $search);
    }
  });
 
  return $this;
});

So now, if we pass a single column (using the array_wrap function we convert it to an array), and search that column, but if we add multiple columns in an array then we loop through all of them and search the search term in all of those columns. Everything is wrapped in an where query because we don't want the whereLike query to mess up any other where queries we can perform on the Eloquent model.

You can use this macro now like this:

public function index(){
 return User::whereLike(['username', 'email'], $search)->get();
}

Thank you for reading this article.

Read Also: How to send a DELETE request with cURL

If you want to manage your VPS / VM Server without touching the command line go and  Checkout this linkServerAvatar allows you to quickly set up WordPress or Custom PHP websites on VPS / VM in a  matter of minutes.  You can host multiple websites on a single VPS / VM, configure SSL certificates, and monitor the health of your server without ever touching the command line interface.

If you have any queries or doubts about this topic please feel free to contact us. We will try to reach you.


Comments (0)

No Comments Found.