diff --git a/README.md b/README.md index 96106b3..cf8b99b 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,9 @@ [![Total Downloads](https://img.shields.io/packagist/dt/ghonijee/query-adapter.svg?style=flat-square)](https://packagist.org/packages/ghonijee/query-adapter) [![Actions Status](https://github.com/ghonijee/laravel-query-adapter/actions/workflows/main.yml/badge.svg)](https://github.com/ghonijee/laravel-query-adapter/actions) +## Documentation +Full Documentation [QueryAdapter Docs](https://query-adapter.netlify.app/docs/). This site documentation is under development. + ## Installation You can install the package via composer: diff --git a/config/dx-adapter.php b/config/dx-adapter.php index b0751d6..d2a0681 100644 --- a/config/dx-adapter.php +++ b/config/dx-adapter.php @@ -12,6 +12,6 @@ 'take' => 'take', ], 'query' => [ - 'contains' => 'LIKE' + 'contains' => 'like' ] ]; diff --git a/src/FilterClass/QueryClass/StringFilter.php b/src/FilterClass/QueryClass/StringFilter.php index f5edfce..b610713 100644 --- a/src/FilterClass/QueryClass/StringFilter.php +++ b/src/FilterClass/QueryClass/StringFilter.php @@ -9,12 +9,14 @@ class StringFilter protected $query; protected $filterData; protected $conjungtion; + protected $contains; public function __construct($query, $filterData, $conjungtion) { $this->query = $query; $this->filterData = $filterData; $this->conjungtion = $conjungtion; + $this->contains = config('dx-adapter.query.contains') ?: "like"; } public static function build($query, $filterData, $conjungtion) @@ -43,16 +45,16 @@ protected function notCondition() { switch ($this->filterData->condition) { case 'contains': - $this->query->orWhere($this->filterData->field, 'not like', "%{$this->filterData->value}%"); + $this->query->orWhere($this->filterData->field, "not $this->contains", "%{$this->filterData->value}%"); break; case 'notcontains': - $this->query->orWhere($this->filterData->field, 'like', "%{$this->filterData->value}%"); + $this->query->orWhere($this->filterData->field, "$this->contains", "%{$this->filterData->value}%"); break; case 'startswith': - $this->query->orWhere($this->filterData->field, 'not like', "{$this->filterData->value}%"); + $this->query->orWhere($this->filterData->field, "not $this->contains", "{$this->filterData->value}%"); break; case 'endswith': - $this->query->orWhere($this->filterData->field, 'not like', "%{$this->filterData->value}"); + $this->query->orWhere($this->filterData->field, "not $this->contains", "%{$this->filterData->value}"); break; case '=': $this->query->whereNot($this->filterData->field, $this->filterData->value); @@ -67,16 +69,16 @@ protected function orCondition() { switch ($this->filterData->condition) { case 'contains': - $this->query->orWhere($this->filterData->field, 'like', "%{$this->filterData->value}%"); + $this->query->orWhere($this->filterData->field, "$this->contains", "%{$this->filterData->value}%"); break; case 'notcontains': - $this->query->orWhere($this->filterData->field, 'not like', "%{$this->filterData->value}%"); + $this->query->orWhere($this->filterData->field, "not $this->contains", "%{$this->filterData->value}%"); break; case 'startswith': - $this->query->orWhere($this->filterData->field, 'like', "{$this->filterData->value}%"); + $this->query->orWhere($this->filterData->field, "$this->contains", "{$this->filterData->value}%"); break; case 'endswith': - $this->query->orWhere($this->filterData->field, 'like', "%{$this->filterData->value}"); + $this->query->orWhere($this->filterData->field, "$this->contains", "%{$this->filterData->value}"); break; case '=': $this->query->orWhere($this->filterData->field, $this->filterData->value); @@ -90,16 +92,16 @@ protected function andCondition() { switch ($this->filterData->condition) { case 'contains': - $this->query->where($this->filterData->field, 'like', "%{$this->filterData->value}%"); + $this->query->where($this->filterData->field, "$this->contains", "%{$this->filterData->value}%"); break; case 'notcontains': - $this->query->where($this->filterData->field, 'not like', "%{$this->filterData->value}%"); + $this->query->where($this->filterData->field, "not $this->contains", "%{$this->filterData->value}%"); break; case 'startswith': - $this->query->where($this->filterData->field, 'like', "{$this->filterData->value}%"); + $this->query->where($this->filterData->field, "$this->contains", "{$this->filterData->value}%"); break; case 'endswith': - $this->query->where($this->filterData->field, 'like', "%{$this->filterData->value}"); + $this->query->where($this->filterData->field, "$this->contains", "%{$this->filterData->value}"); break; case '=': $this->query->where($this->filterData->field, $this->filterData->value); diff --git a/tests/TestCase.php b/tests/TestCase.php index 47b77e0..6e4d101 100644 --- a/tests/TestCase.php +++ b/tests/TestCase.php @@ -44,7 +44,7 @@ protected function usesMySqlConnection(Application $app) $app->config->set('dx-adapter.request.order', 'sort'); $app->config->set('dx-adapter.request.skip', 'skip'); $app->config->set('dx-adapter.request.take', 'take'); - $app->config->set('dx-adapter.query.contains', 'LIKE'); + $app->config->set('dx-adapter.query.contains', 'like'); } protected function getPackageProviders($app)