Skip to content

Commit 0b9b714

Browse files
committed
wip
1 parent 60f1caf commit 0b9b714

File tree

10 files changed

+91
-144
lines changed

10 files changed

+91
-144
lines changed

README.md

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,14 @@
22

33
Create and use eloquent filters easily.
44

5+
This package idea comes from [Laracasts lets build a forum with laravel](https://laracasts.com/series/lets-build-a-forum-with-laravel) series.
6+
57
# Installation
68

79
You can install the package via composer:
810

911
```bash
10-
$ composer require laratoolbox/database-viewer
12+
$ composer require laratoolbox/eloquent-filters
1113
```
1214

1315
# Usage
@@ -18,16 +20,21 @@ First create filter like below.
1820
php artisan make:filter UserFilter
1921
```
2022

21-
After creating the filter, add Filter trait into your eloquent model.
23+
After creating the filter, add EloquentFilter trait into your eloquent model.
2224

2325
```php
24-
use \LaraToolbox\EloquentFilters\Traits\Filters;
26+
use \LaraToolbox\EloquentFilters\HasFilter;
2527
```
2628

2729
Then you may use filter like below.
2830

2931
```php
30-
MyEloquentModel::filter( new UserFilter(request()) )->get();
32+
MyEloquentModel::filter( new UserFilter() )->get();
33+
34+
// or you can give request instance into filter.
35+
36+
$request = request();
37+
MyEloquentModel::filter( new UserFilter($request) )->get();
3138
```
3239

3340
# Testing

src/Commands/MakeFilter.php

Lines changed: 0 additions & 81 deletions
This file was deleted.

src/Commands/MakeFilterCommand.php

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
<?php
2+
3+
namespace LaraToolbox\EloquentFilters\Commands;
4+
5+
use Illuminate\Console\GeneratorCommand;
6+
7+
class MakeFilterCommand extends GeneratorCommand
8+
{
9+
protected $name = 'make:filter';
10+
11+
protected $description = 'Create a new filter class';
12+
13+
protected $type = 'Filter';
14+
15+
protected function getStub()
16+
{
17+
return __DIR__.'/stubs/filter.stub';
18+
}
19+
20+
protected function getDefaultNamespace($rootNamespace)
21+
{
22+
return $rootNamespace.'\Filters';
23+
}
24+
25+
public function handle()
26+
{
27+
parent::handle();
28+
29+
$this->info('Add this trait to your model for using filters:');
30+
$this->info('use \LaraToolbox\EloquentFilters\HasFilter;');
31+
}
32+
}

src/Commands/stubs/filter.stub

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<?php
2+
3+
namespace {{ namespace }};
4+
5+
use LaraToolbox\EloquentFilters\Filters;
6+
7+
class {{ class }} extends Filters
8+
{
9+
protected $filters = [
10+
// 'name'
11+
];
12+
13+
/**
14+
* @return \Illuminate\Database\Eloquent\Builder
15+
*/
16+
protected function name()
17+
{
18+
// return $this->builder->where('name', 'LIKE', sprintf('%%%s%%', $this->request->name));
19+
}
20+
}

src/EloquentFilters.php renamed to src/Filters.php

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22

33
namespace LaraToolbox\EloquentFilters;
44

5-
abstract class FilterBase
5+
abstract class Filters
66
{
77
/**
8-
* @var Request
8+
* @var \Illuminate\Http\Request
99
*/
1010
protected $request;
1111

@@ -24,7 +24,7 @@ abstract class FilterBase
2424
protected $filters = [];
2525

2626
/**
27-
* Create a new ThreadFilters instance.
27+
* Create a new Filter instance.
2828
*
2929
* @param \Illuminate\Http\Request $request
3030
*/
@@ -41,7 +41,6 @@ public function __construct($request = null)
4141
* Apply the filters.
4242
*
4343
* @param \Illuminate\Database\Eloquent\Builder $builder
44-
*
4544
* @return \Illuminate\Database\Eloquent\Builder
4645
*/
4746
public function apply($builder)

src/HasFilter.php

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
<?php
2+
3+
namespace LaraToolbox\EloquentFilters;
4+
5+
trait HasFilter
6+
{
7+
/**
8+
* Apply all relevant filters.
9+
*
10+
* @param \Illuminate\Database\Eloquent\Builder $query
11+
* @param $filter
12+
*
13+
* @return \Illuminate\Database\Eloquent\Builder
14+
*/
15+
public function scopeFilter($query, $filter)
16+
{
17+
if (!is_subclass_of($filter, \LaraToolbox\EloquentFilters\Filters::class)) {
18+
// TODO: throw exception here!
19+
}
20+
21+
return $filter->apply($query);
22+
}
23+
}

src/PackageServiceProvider.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
namespace LaraToolbox\EloquentFilters;
44

55
use Illuminate\Support\ServiceProvider;
6-
use LaraToolbox\EloquentFilters\Commands\MakeFilter;
6+
use LaraToolbox\EloquentFilters\Commands\MakeFilterCommand;
77

88
class PackageServiceProvider extends ServiceProvider
99
{
@@ -14,7 +14,7 @@ public function boot()
1414
{
1515
if ($this->app->runningInConsole()) {
1616
$this->commands([
17-
MakeFilter::class,
17+
MakeFilterCommand::class,
1818
]);
1919
}
2020
}

src/Trait/Filter.php

Lines changed: 0 additions & 23 deletions
This file was deleted.

src/config/eloquent_filters.php

Lines changed: 0 additions & 7 deletions
This file was deleted.

src/stub/filter.stub

Lines changed: 0 additions & 23 deletions
This file was deleted.

0 commit comments

Comments
 (0)