44
55use Dingo \Api \Http \Request ;
66use Dingo \Api \Transformer \Binding ;
7+ use League \Fractal \TransformerAbstract ;
78use Dingo \Api \Contract \Transformer \Adapter ;
89use League \Fractal \Manager as FractalManager ;
910use League \Fractal \Resource \Item as FractalItem ;
@@ -64,10 +65,10 @@ public function __construct(FractalManager $fractal, $includeKey = 'include', $i
6465 /**
6566 * Transform a response with a transformer.
6667 *
67- * @param mixed $response
68- * @param object $transformer
69- * @param \Dingo\Api\Transformer\Binding $binding
70- * @param \Dingo\Api\Http\Request $request
68+ * @param mixed $response
69+ * @param League\Fractal\TransformerAbstract| object $transformer
70+ * @param \Dingo\Api\Transformer\Binding $binding
71+ * @param \Dingo\Api\Http\Request $request
7172 *
7273 * @return array
7374 */
@@ -89,6 +90,11 @@ public function transform($response, $transformer, Binding $binding, Request $re
8990 if ($ this ->shouldEagerLoad ($ response )) {
9091 $ eagerLoads = $ this ->mergeEagerLoads ($ transformer , $ this ->fractal ->getRequestedIncludes ());
9192
93+ if ($ transformer instanceof TransformerAbstract) {
94+ // Only eager load the items in available includes
95+ $ eagerLoads = array_intersect ($ eagerLoads , $ transformer ->getAvailableIncludes ());
96+ }
97+
9298 $ response ->load ($ eagerLoads );
9399 }
94100
0 commit comments