Mercurial > packages > framework
annotate 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 |
| rev | line source |
|---|---|
|
1
56d9c64d64aa
Setting up the base, still have plenty of work to be done here.
luka
parents:
diff
changeset
|
1 <?php |
|
56d9c64d64aa
Setting up the base, still have plenty of work to be done here.
luka
parents:
diff
changeset
|
2 |
|
56d9c64d64aa
Setting up the base, still have plenty of work to be done here.
luka
parents:
diff
changeset
|
3 namespace Wizard\Framework\Traits; |
|
56d9c64d64aa
Setting up the base, still have plenty of work to be done here.
luka
parents:
diff
changeset
|
4 |
|
56d9c64d64aa
Setting up the base, still have plenty of work to be done here.
luka
parents:
diff
changeset
|
5 trait Filterable |
|
56d9c64d64aa
Setting up the base, still have plenty of work to be done here.
luka
parents:
diff
changeset
|
6 { |
|
56d9c64d64aa
Setting up the base, still have plenty of work to be done here.
luka
parents:
diff
changeset
|
7 protected static $filters = []; |
|
56d9c64d64aa
Setting up the base, still have plenty of work to be done here.
luka
parents:
diff
changeset
|
8 |
|
56d9c64d64aa
Setting up the base, still have plenty of work to be done here.
luka
parents:
diff
changeset
|
9 // End goal: 'column_name' 'operator' 'value' |
|
56d9c64d64aa
Setting up the base, still have plenty of work to be done here.
luka
parents:
diff
changeset
|
10 // string: name LIKE '%test%' |
|
56d9c64d64aa
Setting up the base, still have plenty of work to be done here.
luka
parents:
diff
changeset
|
11 // value: id = 3 |
|
56d9c64d64aa
Setting up the base, still have plenty of work to be done here.
luka
parents:
diff
changeset
|
12 // date: |
|
56d9c64d64aa
Setting up the base, still have plenty of work to be done here.
luka
parents:
diff
changeset
|
13 // |
|
56d9c64d64aa
Setting up the base, still have plenty of work to be done here.
luka
parents:
diff
changeset
|
14 // |
|
56d9c64d64aa
Setting up the base, still have plenty of work to be done here.
luka
parents:
diff
changeset
|
15 // table |
|
56d9c64d64aa
Setting up the base, still have plenty of work to be done here.
luka
parents:
diff
changeset
|
16 // column |
|
56d9c64d64aa
Setting up the base, still have plenty of work to be done here.
luka
parents:
diff
changeset
|
17 // operator ? based on the value? |
|
56d9c64d64aa
Setting up the base, still have plenty of work to be done here.
luka
parents:
diff
changeset
|
18 // value |
|
56d9c64d64aa
Setting up the base, still have plenty of work to be done here.
luka
parents:
diff
changeset
|
19 // required joins |
|
56d9c64d64aa
Setting up the base, still have plenty of work to be done here.
luka
parents:
diff
changeset
|
20 // |
|
56d9c64d64aa
Setting up the base, still have plenty of work to be done here.
luka
parents:
diff
changeset
|
21 |
|
56d9c64d64aa
Setting up the base, still have plenty of work to be done here.
luka
parents:
diff
changeset
|
22 public function scopeFilter($query, $validated) |
|
56d9c64d64aa
Setting up the base, still have plenty of work to be done here.
luka
parents:
diff
changeset
|
23 { |
|
56d9c64d64aa
Setting up the base, still have plenty of work to be done here.
luka
parents:
diff
changeset
|
24 $filters = static::$filters; |
|
56d9c64d64aa
Setting up the base, still have plenty of work to be done here.
luka
parents:
diff
changeset
|
25 |
|
56d9c64d64aa
Setting up the base, still have plenty of work to be done here.
luka
parents:
diff
changeset
|
26 foreach ($filters as $key => $filter) { |
|
56d9c64d64aa
Setting up the base, still have plenty of work to be done here.
luka
parents:
diff
changeset
|
27 |
|
56d9c64d64aa
Setting up the base, still have plenty of work to be done here.
luka
parents:
diff
changeset
|
28 if (isset($validated[$key])) { |
|
56d9c64d64aa
Setting up the base, still have plenty of work to be done here.
luka
parents:
diff
changeset
|
29 if (isset($filter['callback'])) { |
|
56d9c64d64aa
Setting up the base, still have plenty of work to be done here.
luka
parents:
diff
changeset
|
30 |
|
56d9c64d64aa
Setting up the base, still have plenty of work to be done here.
luka
parents:
diff
changeset
|
31 } else { |
|
56d9c64d64aa
Setting up the base, still have plenty of work to be done here.
luka
parents:
diff
changeset
|
32 switch ($filter['type']) { |
|
56d9c64d64aa
Setting up the base, still have plenty of work to be done here.
luka
parents:
diff
changeset
|
33 case 'value': |
|
56d9c64d64aa
Setting up the base, still have plenty of work to be done here.
luka
parents:
diff
changeset
|
34 default: |
|
56d9c64d64aa
Setting up the base, still have plenty of work to be done here.
luka
parents:
diff
changeset
|
35 $this->valueFilter($query, $filter, $validated[$key]); |
|
56d9c64d64aa
Setting up the base, still have plenty of work to be done here.
luka
parents:
diff
changeset
|
36 } |
|
56d9c64d64aa
Setting up the base, still have plenty of work to be done here.
luka
parents:
diff
changeset
|
37 } |
|
56d9c64d64aa
Setting up the base, still have plenty of work to be done here.
luka
parents:
diff
changeset
|
38 } |
|
56d9c64d64aa
Setting up the base, still have plenty of work to be done here.
luka
parents:
diff
changeset
|
39 } |
|
56d9c64d64aa
Setting up the base, still have plenty of work to be done here.
luka
parents:
diff
changeset
|
40 } |
|
56d9c64d64aa
Setting up the base, still have plenty of work to be done here.
luka
parents:
diff
changeset
|
41 |
|
56d9c64d64aa
Setting up the base, still have plenty of work to be done here.
luka
parents:
diff
changeset
|
42 public function valueFilter($query, $filter, $value) |
|
56d9c64d64aa
Setting up the base, still have plenty of work to be done here.
luka
parents:
diff
changeset
|
43 { |
|
56d9c64d64aa
Setting up the base, still have plenty of work to be done here.
luka
parents:
diff
changeset
|
44 $query->where($filter['table'].'.'.$filter['column_name'], '=', $value); |
|
56d9c64d64aa
Setting up the base, still have plenty of work to be done here.
luka
parents:
diff
changeset
|
45 } |
|
56d9c64d64aa
Setting up the base, still have plenty of work to be done here.
luka
parents:
diff
changeset
|
46 |
|
56d9c64d64aa
Setting up the base, still have plenty of work to be done here.
luka
parents:
diff
changeset
|
47 // filter for dates |
|
56d9c64d64aa
Setting up the base, still have plenty of work to be done here.
luka
parents:
diff
changeset
|
48 public function dateFilter() {} |
|
56d9c64d64aa
Setting up the base, still have plenty of work to be done here.
luka
parents:
diff
changeset
|
49 } |
