PLATFORM
  • Tails

    Create websites with TailwindCSS

  • Wave

    Start building the next great SAAS

  • Pines

    Alpine & Tailwind UI Library

  • Auth

    Plug'n Play Authentication for Laravel

  • Designer comingsoon

    Create website designs with AI

  • DevBlog comingsoon

    Blog platform for developers

  • Static

    Build a simple static website

  • SaaS Adventure

    21-day program to build a SAAS

Laravel 9 Eloquent WHERE Like Query Example Tutorial

Laravel 9 Eloquent WHERE Like Query Example Tutorial

Written by TechvBlogs on Jun 23rd, 2022 Views Report Post

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%';

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.

Comments (1)

loading comments