Mercurial > packages > framework
diff src/Traits/Filterable.php @ 1:56d9c64d64aa
Setting up the base, still have plenty of work to be done here.
| author | luka |
|---|---|
| date | Mon, 09 Jun 2025 23:07:17 -0400 |
| parents | |
| children | b44434aaa767 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/Traits/Filterable.php Mon Jun 09 23:07:17 2025 -0400 @@ -0,0 +1,49 @@ +<?php + +namespace Wizard\Framework\Traits; + +trait Filterable +{ + protected static $filters = []; + + // End goal: 'column_name' 'operator' 'value' + // string: name LIKE '%test%' + // value: id = 3 + // date: + // + // + // table + // column + // operator ? based on the value? + // value + // required joins + // + + public function scopeFilter($query, $validated) + { + $filters = static::$filters; + + foreach ($filters as $key => $filter) { + + if (isset($validated[$key])) { + if (isset($filter['callback'])) { + + } else { + switch ($filter['type']) { + case 'value': + default: + $this->valueFilter($query, $filter, $validated[$key]); + } + } + } + } + } + + public function valueFilter($query, $filter, $value) + { + $query->where($filter['table'].'.'.$filter['column_name'], '=', $value); + } + + // filter for dates + public function dateFilter() {} +}
