Browse Source

Builder macros

- where like
- where ilike
Mr. CaT 1 year ago
parent
commit
803b56983c
2 changed files with 38 additions and 0 deletions
  1. 37 0
      app/Providers/Macros/BuilderProvider.php
  2. 1 0
      config/app.php

+ 37 - 0
app/Providers/Macros/BuilderProvider.php

@@ -0,0 +1,37 @@
+<?php
+
+namespace App\Providers\Macros;
+
+use Illuminate\Database\Eloquent\Builder;
+use Illuminate\Support\ServiceProvider;
+
+class BuilderProvider extends ServiceProvider
+{
+    /**
+     * Register services.
+     */
+    public function register(): void
+    {
+        //
+    }
+
+    /**
+     * Bootstrap services.
+     */
+    public function boot(): void
+    {
+        /**
+         * Case sensitive search
+         */
+        Builder::macro('whereLike', function (string $attribute, string $searchTerm) {
+            return $this->orWhere($attribute, 'LIKE', $searchTerm);
+        });
+
+        /**
+         * Case in-sensitive search
+         */
+        Builder::macro('whereILike', function (string $attribute, string $searchTerm) {
+            return $this->orWhere($attribute, 'ILIKE', $searchTerm);
+        });
+    }
+}

+ 1 - 0
config/app.php

@@ -173,6 +173,7 @@ return [
          */
          */
         App\Providers\Macros\ArrayProvider::class,
         App\Providers\Macros\ArrayProvider::class,
         App\Providers\Macros\CollectionProvider::class,
         App\Providers\Macros\CollectionProvider::class,
+        App\Providers\Macros\BuilderProvider::class,
     ])->toArray(),
     ])->toArray(),
 
 
     /*
     /*