@@ -162,7 +162,7 @@ protected function buildIndexFetchQuery(Request $request, Model $parentEntity, a
162162 }
163163
164164 /**
165- * Builds Eloquent query for fetching relation entity.
165+ * Wrapper function to build Eloquent query for fetching relation entity.
166166 *
167167 * @param Request $request
168168 * @param Model $parentEntity
@@ -174,7 +174,29 @@ protected function buildRelationFetchQuery(
174174 Model $ parentEntity ,
175175 array $ requestedRelations
176176 ): Relation {
177- return $ this ->relationQueryBuilder ->buildQuery ($ this ->newRelationQuery ($ parentEntity ), $ request );
177+ return $ this ->buildRelationFetchQueryBase (
178+ $ request ,
179+ $ parentEntity ,
180+ $ requestedRelations
181+ );
182+ }
183+
184+ /**
185+ * Builds Eloquent query for fetching relation entity.
186+ *
187+ * @param Request $request
188+ * @param Model $parentEntity
189+ * @param array $requestedRelations
190+ * @return Relation
191+ */
192+ protected function buildRelationFetchQueryBase (
193+ Request $ request ,
194+ Model $ parentEntity ,
195+ array $ requestedRelations
196+ ): Relation {
197+ return $ this ->relationQueryBuilder ->buildQuery (
198+ $ this ->newRelationQuery ($ parentEntity ), $ request
199+ );
178200 }
179201
180202 /**
@@ -292,7 +314,10 @@ protected function storeWithTransaction(Request $request, $parentKey)
292314 $ query = $ this ->buildStoreFetchQuery ($ request , $ parentEntity , $ requestedRelations );
293315
294316 $ entity = $ this ->runStoreFetchQuery (
295- $ request , $ query , $ parentEntity , $ entity ->{$ this ->keyName ()}
317+ $ request ,
318+ $ query ,
319+ $ parentEntity ,
320+ $ entity ->{$ this ->keyName ()}
296321 );
297322 $ entity ->wasRecentlyCreated = true ;
298323
@@ -554,7 +579,7 @@ protected function runShowFetchQuery(Request $request, Relation $query, Model $p
554579 }
555580
556581 /**
557- * Runs the given query for fetching relation entity.
582+ * Wrapper function to run the given query for fetching relation entity.
558583 *
559584 * @param Request $request
560585 * @param Relation $query
@@ -564,6 +589,29 @@ protected function runShowFetchQuery(Request $request, Relation $query, Model $p
564589 */
565590 protected function runRelationFetchQuery (Request $ request , Relation $ query , Model $ parentEntity , $ relatedKey ): Model
566591 {
592+ return $ this ->runRelationFetchQueryBase (
593+ $ request ,
594+ $ query ,
595+ $ parentEntity ,
596+ $ relatedKey
597+ );
598+ }
599+
600+ /**
601+ * Runs the given query for fetching relation entity.
602+ *
603+ * @param Request $request
604+ * @param Relation $query
605+ * @param Model $parentEntity
606+ * @param string|int $relatedKey
607+ * @return Model
608+ */
609+ protected function runRelationFetchQueryBase (
610+ Request $ request ,
611+ Relation $ query ,
612+ Model $ parentEntity ,
613+ $ relatedKey
614+ ): Model {
567615 if ($ this ->isOneToOneRelation ($ parentEntity )) {
568616 return $ query ->firstOrFail ();
569617 }
@@ -671,7 +719,9 @@ protected function updateWithTransaction(Request $request, $parentKey, $relatedK
671719 $ request ->get ('pivot ' , [])
672720 );
673721
674- $ entity = $ this ->runUpdateFetchQuery ($ request , $ query , $ parentEntity , $ relatedKey );
722+ $ entity = $ this ->refreshUpdatedEntity (
723+ $ request , $ parentEntity , $ requestedRelations , $ relatedKey
724+ );
675725 $ entity = $ this ->cleanupEntity ($ entity );
676726
677727 if (count ($ this ->getPivotJson ())) {
@@ -745,6 +795,35 @@ protected function runUpdateFetchQuery(Request $request, Relation $query, Model
745795 return $ this ->runRelationFetchQuery ($ request , $ query , $ parentEntity , $ relatedKey );
746796 }
747797
798+ /**
799+ * Fetches the relation model that has just been updated using the given key.
800+ *
801+ * @param Request $request
802+ * @param Model $parentEntity
803+ * @param array $requestedRelations
804+ * @param string|int $relatedKey
805+ * @return Model
806+ */
807+ protected function refreshUpdatedEntity (
808+ Request $ request ,
809+ Model $ parentEntity ,
810+ array $ requestedRelations ,
811+ $ relatedKey
812+ ): Model {
813+ $ query = $ this ->buildRelationFetchQueryBase (
814+ $ request ,
815+ $ parentEntity ,
816+ $ requestedRelations
817+ );
818+
819+ return $ this ->runRelationFetchQueryBase (
820+ $ request ,
821+ $ query ,
822+ $ parentEntity ,
823+ $ relatedKey
824+ );
825+ }
826+
748827 /**
749828 * The hook is executed before updating a relation resource.
750829 *
0 commit comments