Skip to content

Commit c264c6a

Browse files
committed
fix: batch operations - attempting to fetch entities using query builder with previously applied constraints of other entities
1 parent f4ad23e commit c264c6a

File tree

2 files changed

+18
-16
lines changed

2 files changed

+18
-16
lines changed

src/Concerns/HandlesRelationStandardBatchOperations.php

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,6 @@ protected function batchStoreWithTransaction(Request $request, $parentKey)
6060

6161
$requestedRelations = $this->relationsResolver->requestedRelations($request);
6262

63-
$entityQuery = $this->buildStoreFetchQuery($request, $parentEntity, $requestedRelations);
64-
6563
foreach ($resources as $resource) {
6664
/** @var Model $entity */
6765
$entity = new $resourceModelClass;
@@ -77,12 +75,16 @@ protected function batchStoreWithTransaction(Request $request, $parentKey)
7775
Arr::get($resource, 'pivot', [])
7876
);
7977

78+
$entityQuery = $this->buildStoreFetchQuery(
79+
$request, $parentEntity, $requestedRelations
80+
);
8081
$entity = $this->runStoreFetchQuery(
8182
$request,
8283
$entityQuery,
8384
$parentEntity,
8485
$entity->{$this->keyName()}
8586
);
87+
8688
$entity->wasRecentlyCreated = true;
8789

8890
$entity = $this->cleanupEntity($entity);
@@ -198,8 +200,6 @@ protected function batchUpdateWithTransaction(Request $request, $parentKey)
198200
$query = $this->buildBatchUpdateFetchQuery($request, $parentEntity, $requestedRelations);
199201
$entities = $this->runBatchUpdateFetchQuery($request, $query, $parentEntity);
200202

201-
$entityQuery = $this->buildUpdateFetchQuery($request, $parentEntity, $requestedRelations);
202-
203203
foreach ($entities as $entity) {
204204
/** @var Model $entity */
205205
$this->authorize($this->resolveAbility('update'), [$entity, $parentEntity]);
@@ -219,6 +219,9 @@ protected function batchUpdateWithTransaction(Request $request, $parentKey)
219219
Arr::get($resource, 'pivot', [])
220220
);
221221

222+
$entityQuery = $this->buildUpdateFetchQuery(
223+
$request, $parentEntity, $requestedRelations
224+
);
222225
$entity = $this->runUpdateFetchQuery(
223226
$request, $entityQuery, $parentEntity, $entity->{$this->keyName()}
224227
);
@@ -400,8 +403,6 @@ protected function batchDestroyWithTransaction(Request $request, $parentKey)
400403
$query = $this->buildBatchDestroyFetchQuery($request, $parentEntity, $requestedRelations, $softDeletes);
401404
$entities = $this->runBatchDestroyFetchQuery($request, $query, $parentEntity);
402405

403-
$entityQuery = $this->buildStoreFetchQuery($request, $parentEntity, $requestedRelations);
404-
405406
foreach ($entities as $entity) {
406407
/** @var Model $entity */
407408
$this->authorize($this->resolveAbility($forceDeletes ? 'forceDelete' : 'delete'), [$entity, $parentEntity]);
@@ -412,6 +413,9 @@ protected function batchDestroyWithTransaction(Request $request, $parentKey)
412413
$this->performDestroy($entity);
413414

414415
if ($softDeletes) {
416+
$entityQuery = $this->buildDestroyFetchQuery(
417+
$request, $parentEntity, $requestedRelations, $softDeletes
418+
);
415419
$entity = $this->runDestroyFetchQuery(
416420
$request, $entityQuery, $parentEntity, $entity->{$this->keyName()}
417421
);
@@ -569,8 +573,6 @@ protected function batchRestoreWithTransaction(Request $request, $parentKey)
569573
$query = $this->buildBatchRestoreFetchQuery($request, $parentEntity, $requestedRelations);
570574
$entities = $this->runBatchRestoreFetchQuery($request, $query, $parentEntity);
571575

572-
$entityQuery = $this->buildRestoreFetchQuery($request, $parentEntity, $requestedRelations);
573-
574576
foreach ($entities as $entity) {
575577
/** @var Model $entity */
576578
$this->authorize($this->resolveAbility('restore'), [$entity, $parentEntity]);
@@ -579,6 +581,9 @@ protected function batchRestoreWithTransaction(Request $request, $parentKey)
579581

580582
$this->performRestore($entity);
581583

584+
$entityQuery = $this->buildRestoreFetchQuery(
585+
$request, $parentEntity, $requestedRelations
586+
);
582587
$entity = $this->runRestoreFetchQuery(
583588
$request, $entityQuery, $parentEntity, $entity->{$this->keyName()}
584589
);

src/Concerns/HandlesStandardBatchOperations.php

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,6 @@ protected function batchStoreWithTransaction(Request $request)
5353

5454
$requestedRelations = $this->relationsResolver->requestedRelations($request);
5555

56-
$entityQuery = $this->buildStoreFetchQuery($request, $requestedRelations);
57-
5856
foreach ($resources as $resource) {
5957
/**
6058
* @var Model $entity
@@ -68,7 +66,9 @@ protected function batchStoreWithTransaction(Request $request)
6866

6967
$this->beforeStoreFresh($request, $entity);
7068

69+
$entityQuery = $this->buildStoreFetchQuery($request, $requestedRelations);
7170
$entity = $this->runStoreFetchQuery($request, $entityQuery, $entity->{$this->keyName()});
71+
7272
$entity->wasRecentlyCreated = true;
7373

7474
$this->afterSave($request, $entity);
@@ -146,8 +146,6 @@ protected function batchUpdateWithTransaction(Request $request)
146146
$query = $this->buildBatchUpdateFetchQuery($request, $requestedRelations);
147147
$entities = $this->runBatchUpdateFetchQuery($request, $query);
148148

149-
$entityQuery = $this->buildUpdateFetchQuery($request, $requestedRelations);
150-
151149
foreach ($entities as $entity) {
152150
/** @var Model $entity */
153151
$this->authorize($this->resolveAbility('update'), $entity);
@@ -165,6 +163,7 @@ protected function batchUpdateWithTransaction(Request $request)
165163

166164
$this->beforeUpdateFresh($request, $entity);
167165

166+
$entityQuery = $this->buildUpdateFetchQuery($request, $requestedRelations);
168167
$entity = $this->runUpdateFetchQuery($request, $entityQuery, $entity->{$this->keyName()});
169168

170169
$this->afterSave($request, $entity);
@@ -297,8 +296,6 @@ protected function batchDestroyWithTransaction(Request $request)
297296
$query = $this->buildBatchDestroyFetchQuery($request, $requestedRelations, $softDeletes);
298297
$entities = $this->runBatchDestroyFetchQuery($request, $query);
299298

300-
$entityQuery = $this->buildDestroyFetchQuery($request, $requestedRelations, $softDeletes);
301-
302299
foreach ($entities as $entity) {
303300
/**
304301
* @var Model $entity
@@ -313,6 +310,7 @@ protected function batchDestroyWithTransaction(Request $request)
313310
if ($softDeletes) {
314311
$this->beforeDestroyFresh($request, $entity);
315312

313+
$entityQuery = $this->buildDestroyFetchQuery($request, $requestedRelations, $softDeletes);
316314
$entity = $this->runDestroyFetchQuery($request, $entityQuery, $entity->{$this->keyName()});
317315
}
318316
} else {
@@ -421,8 +419,6 @@ protected function batchRestoreWithTransaction(Request $request)
421419
$query = $this->buildBatchRestoreFetchQuery($request, $requestedRelations);
422420
$entities = $this->runBatchRestoreFetchQuery($request, $query);
423421

424-
$entityQuery = $this->buildRestoreFetchQuery($request, $requestedRelations);
425-
426422
foreach ($entities as $entity) {
427423
/**
428424
* @var Model $entity
@@ -435,6 +431,7 @@ protected function batchRestoreWithTransaction(Request $request)
435431

436432
$this->beforeRestoreFresh($request, $entity);
437433

434+
$entityQuery = $this->buildRestoreFetchQuery($request, $requestedRelations);
438435
$entity = $this->runRestoreFetchQuery($request, $entityQuery, $entity->{$this->keyName()});
439436

440437
$this->afterRestore($request, $entity);

0 commit comments

Comments
 (0)