@@ -27,13 +27,15 @@ trait HandlesRelationStandardOperations
2727 * Fetch the list of relation resources.
2828 *
2929 * @param Request $request
30- * @param int|string $parentKey
30+ * @param array< int, mixed> $args
3131 * @return CollectionResource
3232 */
33- public function index (Request $ request , $ parentKey )
33+ public function index (Request $ request , ... $ args )
3434 {
3535 $ requestedRelations = $ this ->relationsResolver ->requestedRelations ($ request );
3636
37+ $ parentKey = $ this ->keyResolver ->resolveRelationOperationParentKey ($ request , $ args );
38+
3739 $ parentQuery = $ this ->buildIndexParentFetchQuery ($ request , $ parentKey );
3840 $ parentEntity = $ this ->runIndexParentFetchQuery ($ request , $ parentQuery , $ parentKey );
3941
@@ -255,11 +257,13 @@ public function search(Request $request, $parentKey)
255257 * Create new relation resource.
256258 *
257259 * @param Request $request
258- * @param int|string $parentKey
260+ * @param array< int, mixed> $args
259261 * @return Resource
260262 */
261- public function store (Request $ request , $ parentKey )
263+ public function store (Request $ request , ... $ args )
262264 {
265+ $ parentKey = $ this ->keyResolver ->resolveRelationOperationParentKey ($ request , $ args );
266+
263267 try {
264268 $ this ->startTransaction ();
265269 $ result = $ this ->storeWithTransaction ($ request , $ parentKey );
@@ -484,12 +488,14 @@ protected function afterStore(Request $request, Model $parentEntity, Model $enti
484488 * Fetch a relation resource.
485489 *
486490 * @param Request $request
487- * @param int|string $parentKey
488- * @param int|string|null $relatedKey
491+ * @param array<int, mixed> $args
489492 * @return Resource
490493 */
491- public function show (Request $ request , $ parentKey , $ relatedKey = null )
494+ public function show (Request $ request , ... $ args )
492495 {
496+ $ parentKey = $ this ->keyResolver ->resolveRelationOperationParentKey ($ request , $ args );
497+ $ relatedKey = $ this ->keyResolver ->resolveRelationOperationRelatedKey ($ request , $ args );
498+
493499 $ parentQuery = $ this ->buildShowParentFetchQuery ($ request , $ parentKey );
494500 $ parentEntity = $ this ->runShowParentFetchQuery ($ request , $ parentQuery , $ parentKey );
495501
@@ -672,12 +678,15 @@ protected function afterShow(Request $request, Model $parentEntity, Model $entit
672678 * Update a relation resource in a transaction-safe way.
673679 *
674680 * @param Request $request
675- * @param int|string $parentKey
681+ * @param array< int, mixed> $args
676682 * @param int|string|null $relatedKey
677683 * @return Resource
678684 */
679- public function update (Request $ request , $ parentKey , $ relatedKey = null )
685+ public function update (Request $ request , ... $ args )
680686 {
687+ $ parentKey = $ this ->keyResolver ->resolveRelationOperationParentKey ($ request , $ args );
688+ $ relatedKey = $ this ->keyResolver ->resolveRelationOperationRelatedKey ($ request , $ args );
689+
681690 try {
682691 $ this ->startTransaction ();
683692 $ result = $ this ->updateWithTransaction ($ request , $ parentKey , $ relatedKey );
@@ -889,13 +898,16 @@ protected function afterUpdate(Request $request, Model $parentEntity, Model $ent
889898 * Delete a relation resource.
890899 *
891900 * @param Request $request
892- * @param int|string $parentKey
901+ * @param array< int, mixed> $args
893902 * @param int|string|null $relatedKey
894903 * @return Resource
895904 * @throws Exception
896905 */
897- public function destroy (Request $ request , $ parentKey , $ relatedKey = null )
906+ public function destroy (Request $ request , ... $ args )
898907 {
908+ $ parentKey = $ this ->keyResolver ->resolveRelationOperationParentKey ($ request , $ args );
909+ $ relatedKey = $ this ->keyResolver ->resolveRelationOperationRelatedKey ($ request , $ args );
910+
899911 try {
900912 $ this ->startTransaction ();
901913 $ result = $ this ->destroyWithTransaction ($ request , $ parentKey , $ relatedKey );
@@ -1079,12 +1091,15 @@ protected function afterDestroy(Request $request, Model $parentEntity, Model $en
10791091 * Restores a previously deleted relation resource in a transaction-save way.
10801092 *
10811093 * @param Request $request
1082- * @param int|string $parentKey
1094+ * @param array< int, mixed> $args
10831095 * @param int|string|null $relatedKey
10841096 * @return Resource
10851097 */
1086- public function restore (Request $ request , $ parentKey , $ relatedKey = null )
1098+ public function restore (Request $ request , ... $ args )
10871099 {
1100+ $ parentKey = $ this ->keyResolver ->resolveRelationOperationParentKey ($ request , $ args );
1101+ $ relatedKey = $ this ->keyResolver ->resolveRelationOperationRelatedKey ($ request , $ args );
1102+
10881103 try {
10891104 $ this ->startTransaction ();
10901105 $ result = $ this ->restoreWithTransaction ($ request , $ parentKey , $ relatedKey );
0 commit comments