@@ -41,6 +41,11 @@ protected function buildGatesForModel(Model $model) {
4141 }
4242
4343 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+
4449 return array_merge (
4550 // toArray to take advantage of Laravel's logic
4651 collect ($ model ->attributesToArray ())
@@ -84,7 +89,7 @@ public function modelToResponse(Model $model, Resource $resource, array $request
8489 $ relationResource = $ relationConcrete ->resource ();
8590 $ requestArrayRelation = collect ($ requestArray ['includes ' ])
8691 ->first (function ($ include ) use ($ relationName ) {
87- return $ include ['relation ' ] === $ relationName ;
92+ return preg_match ( ' /(?:\.\b)? ' . $ relationName . ' \b/ ' , $ include ['relation ' ]) ;
8893 });
8994
9095 // 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
95100 $ key => $ this ->modelToResponse (
96101 $ modelRelation ,
97102 $ relationResource ,
98- $ requestArrayRelation ,
103+ $ requestArray ,
99104 $ relationConcrete
100105 )
101106 ];
102107 }
103108 return [
104109 $ key => $ modelRelation
105- ->map (fn ($ collectionRelation ) => $ this ->modelToResponse ($ collectionRelation , $ relationResource , $ requestArrayRelation , $ relationConcrete ))
110+ ->map (fn ($ collectionRelation ) => $ this ->modelToResponse ($ collectionRelation , $ relationResource , $ requestArray , $ relationConcrete ))
106111 ->toArray ()
107112 ];
108113 })
0 commit comments