Issues (7)

src/macros/whereLike.php (1 issue)

1
<?php
2
3
use Illuminate\Database\Eloquent\Builder;
4
use Illuminate\Support\Arr;
5
use Illuminate\Support\Str;
6
7
Builder::macro('whereLike', function ($columns, string $value) {
8
    $this->where(function (Builder $query) use ($columns, $value) {
0 ignored issues
show
Comprehensibility Best Practice introduced by
The variable $this seems to be never defined.
Loading history...
9
        foreach (Arr::wrap($columns) as $column) {
10
            $query->when(
11
                Str::contains($column, '.'),
12
13
                // Relational searches
14
                function (Builder $query) use ($column, $value) {
15
                    $parts = explode('.', $column);
16
                    $relationColumn = array_pop($parts);
17
                    $relationName = join('.', $parts);
18
19
                    return $query->orWhereHas(
20
                        $relationName,
21
                        function (Builder $query) use ($relationColumn, $value) {
22
                            $query->where($relationColumn, 'LIKE', "%{$value}%");
23
                        }
24
                    );
25
                },
26
27
                // Default searches
28
                function (Builder $query) use ($column, $value) {
29
                    return $query->orWhere($column, 'LIKE', "%{$value}%");
30
                }
31
            );
32
        }
33
    });
34
35
    return $this;
36
});
37