|
6 | 6 |
|
7 | 7 | trait QueryWithOnlyParameter
|
8 | 8 | {
|
9 |
| - /** |
| 9 | + /** |
10 | 10 | * @var array
|
11 | 11 | */
|
12 | 12 | private $fields;
|
@@ -46,10 +46,14 @@ public function getFieldsForRelationship(): array
|
46 | 46 | * @param Request $request
|
47 | 47 | * @param array $approved_fields
|
48 | 48 | */
|
49 |
| - private function getOnlyValuesFromRequest(Request $request, array $allowed_fields, array $allowed_relations): void |
50 |
| - { |
| 49 | + private function getOnlyValuesFromRequest( |
| 50 | + Request $request, |
| 51 | + array $allowed_fields, |
| 52 | + array $allowed_relations, |
| 53 | + array $excluded_relations = [] // exclude them if they are not in only in request |
| 54 | + ): void { |
51 | 55 | $this->fields = $allowed_fields;
|
52 |
| - $this->hydrates = array_keys($allowed_relations); |
| 56 | + $this->hydrates = array_diff(array_keys($allowed_relations), $excluded_relations); |
53 | 57 |
|
54 | 58 | if ($request->query('format') === 'minimal') {
|
55 | 59 | $this->fields = ['id', 'name', 'description', 'translations'];
|
@@ -88,15 +92,24 @@ private function getNeededRelations(array $allowed_relations)
|
88 | 92 | }
|
89 | 93 | }
|
90 | 94 | }
|
91 |
| - public function addOnlyParameteresFromRequest(Request $request, array $allowed_fields, array $allowed_relations, array $required_fields): void |
92 |
| - { |
93 |
| - $this->getOnlyValuesFromRequest($request, $allowed_fields, $allowed_relations); |
| 95 | + public function addOnlyParameteresFromRequest( |
| 96 | + Request $request, |
| 97 | + array $allowed_fields, |
| 98 | + array $allowed_relations, |
| 99 | + array $required_fields, |
| 100 | + array $relations_to_prune = [] // exclude them if they are not in request |
| 101 | + ): void { |
| 102 | + $this->getOnlyValuesFromRequest($request, $allowed_fields, $allowed_relations, $relations_to_prune); |
94 | 103 | $this->fields = array_unique(array_merge($this->fields, $required_fields));
|
95 | 104 | $this->getNeededRelations($allowed_relations);
|
96 | 105 | }
|
97 |
| - |
98 |
| - public function addOnlyValues(array $fields, array $hydrates, array $allowed_relations, array $required_fields) |
99 |
| - { |
| 106 | + |
| 107 | + public function addOnlyValues( |
| 108 | + array $fields, |
| 109 | + array $hydrates, |
| 110 | + array $allowed_relations, |
| 111 | + array $required_fields |
| 112 | + ) { |
100 | 113 | $this->fields = $fields;
|
101 | 114 | $this->hydrates = $hydrates;
|
102 | 115 | $this->fields = array_unique(array_merge($this->fields, $required_fields));
|
|
0 commit comments