@@ -41,6 +41,11 @@ protected function buildGatesForModel(Model $model) {
41
41
}
42
42
43
43
public function modelToResponse (Model $ model , Resource $ resource , array $ requestArray , Relation $ relation = null ) {
44
+ $ currentRequestArray = $ relation === null ? $ requestArray : collect ($ requestArray ['includes ' ])
45
+ ->first (function ($ include ) use ($ relation ) {
46
+ return preg_match ('/(?:\.\b)? ' .$ relation ->relation .'\b/ ' , $ include ['relation ' ]);
47
+ });
48
+
44
49
return array_merge (
45
50
// toArray to take advantage of Laravel's logic
46
51
collect ($ model ->attributesToArray ())
@@ -84,7 +89,7 @@ public function modelToResponse(Model $model, Resource $resource, array $request
84
89
$ relationResource = $ relationConcrete ->resource ();
85
90
$ requestArrayRelation = collect ($ requestArray ['includes ' ])
86
91
->first (function ($ include ) use ($ relationName ) {
87
- return $ include ['relation ' ] === $ relationName ;
92
+ return preg_match ( ' /(?:\.\b)? ' . $ relationName . ' \b/ ' , $ include ['relation ' ]) ;
88
93
});
89
94
90
95
// We reapply the limits in case of BelongsToManyRelation where we can't apply limits easily
@@ -95,14 +100,14 @@ public function modelToResponse(Model $model, Resource $resource, array $request
95
100
$ key => $ this ->modelToResponse (
96
101
$ modelRelation ,
97
102
$ relationResource ,
98
- $ requestArrayRelation ,
103
+ $ requestArray ,
99
104
$ relationConcrete
100
105
)
101
106
];
102
107
}
103
108
return [
104
109
$ key => $ modelRelation
105
- ->map (fn ($ collectionRelation ) => $ this ->modelToResponse ($ collectionRelation , $ relationResource , $ requestArrayRelation , $ relationConcrete ))
110
+ ->map (fn ($ collectionRelation ) => $ this ->modelToResponse ($ collectionRelation , $ relationResource , $ requestArray , $ relationConcrete ))
106
111
->toArray ()
107
112
];
108
113
})
0 commit comments