diff --git a/src/BaseFeatures/Filters/ContainsFilter.php b/src/BaseFeatures/Filters/ContainsFilter.php index 723128c..a1c7caf 100644 --- a/src/BaseFeatures/Filters/ContainsFilter.php +++ b/src/BaseFeatures/Filters/ContainsFilter.php @@ -3,6 +3,7 @@ namespace BluefynInternational\ReportEngine\BaseFeatures\Filters; use Illuminate\Database\Query\Builder; +use Illuminate\Support\Facades\DB; class ContainsFilter extends BaseFilter { @@ -25,9 +26,9 @@ public function apply(Builder $builder, array $options = []) : Builder * * @return Builder */ - public static function build(Builder $builder, $field, $value, string $action = 'where') : Builder + public static function build(Builder $builder, mixed $field, mixed $value, string $action = 'where') : Builder { - return $builder->$action($field, 'like', '%' . $value . '%'); + return $builder->$action(DB::raw('COALESCE(' . $field . ", '')"), 'like', '%' . $value . '%'); } /** diff --git a/src/BaseFeatures/Filters/DoesNotContainFilter.php b/src/BaseFeatures/Filters/DoesNotContainFilter.php index a931549..b0132b3 100644 --- a/src/BaseFeatures/Filters/DoesNotContainFilter.php +++ b/src/BaseFeatures/Filters/DoesNotContainFilter.php @@ -3,6 +3,7 @@ namespace BluefynInternational\ReportEngine\BaseFeatures\Filters; use Illuminate\Database\Query\Builder; +use Illuminate\Support\Facades\DB; class DoesNotContainFilter extends BaseFilter { @@ -14,9 +15,20 @@ class DoesNotContainFilter extends BaseFilter */ public function apply(Builder $builder, array $options = []) : Builder { - $action = $this->getAction(); + return self::build($builder, $this->getField(), $this->getValue(), $this->getAction()); + } - return $builder->$action($this->getField(), 'not like', '%' . $this->getValue() . '%'); + /** + * @param Builder $builder + * @param mixed $field + * @param mixed $value + * @param string $action + * + * @return Builder + */ + public static function build(Builder $builder, mixed $field, mixed $value, string $action = 'where') : Builder + { + return $builder->$action(DB::raw('COALESCE(' . $field . ", '')"), 'not like', '%' . $value . '%'); } /**