Skip to content

Commit 1f81e44

Browse files
authored
parse the nested parent into the filter / store query
1 parent 0d0108b commit 1f81e44

File tree

1 file changed

+35
-2
lines changed

1 file changed

+35
-2
lines changed

src/Http/Api/Contracts/HasParser.php

Lines changed: 35 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,16 +34,49 @@ protected function getUriParser()
3434
* @param mixed $request
3535
* @param array $extraParams
3636
*/
37-
protected function addCustomParams(array $extraParams = []): void
37+
protected function addCustomParams(array $extraParams = []): void
3838
{
3939
$this->originalQueryParams = $this->request->query();
4040

4141
$all = $this->request->all();
42-
$new = Helpers::array_merge_request($all, $extraParams);
42+
$new = Helpers::array_merge_request($all, $extraParams, $this->filterByParent());
4343
$this->request->replace($new);
4444
}
4545

4646

47+
protected function filterByParent(): array
48+
{
49+
$parent = $this->parentModel ?? null;
50+
if($parent === null){
51+
return [];
52+
}
53+
54+
if(is_array($parent)) {
55+
$key = key($parent);
56+
$param = reset($parent);
57+
}else{
58+
$key = strtolower(class_basename($parent));
59+
}
60+
61+
if($this->request->isMethod('get'))
62+
{
63+
return [
64+
'filter' => [
65+
self::$model->{$key}()->getForeignKeyName() => $this->request->route()->originalParameter($param ?? $key)
66+
]
67+
];
68+
}
69+
70+
if($this->request->isMethod('post'))
71+
{
72+
return [
73+
self::$model->{$key}()->getForeignKeyName() => $this->request->route()->originalParameter($param ?? $key)
74+
];
75+
}
76+
77+
}
78+
79+
4780
/**
4881
* Parses our sort parameters.
4982
*/

0 commit comments

Comments
 (0)