Skip to content

Commit

Permalink
fix: batch operations - attempting to fetch entities using query buil…
Browse files Browse the repository at this point in the history
…der with previously applied constraints of other entities
  • Loading branch information
alexzarbn committed Oct 27, 2022
1 parent f4ad23e commit c264c6a
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 16 deletions.
21 changes: 13 additions & 8 deletions src/Concerns/HandlesRelationStandardBatchOperations.php
Original file line number Diff line number Diff line change
Expand Up @@ -60,8 +60,6 @@ protected function batchStoreWithTransaction(Request $request, $parentKey)

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

$entityQuery = $this->buildStoreFetchQuery($request, $parentEntity, $requestedRelations);

foreach ($resources as $resource) {
/** @var Model $entity */
$entity = new $resourceModelClass;
Expand All @@ -77,12 +75,16 @@ protected function batchStoreWithTransaction(Request $request, $parentKey)
Arr::get($resource, 'pivot', [])
);

$entityQuery = $this->buildStoreFetchQuery(
$request, $parentEntity, $requestedRelations
);
$entity = $this->runStoreFetchQuery(
$request,
$entityQuery,
$parentEntity,
$entity->{$this->keyName()}
);

$entity->wasRecentlyCreated = true;

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

$entityQuery = $this->buildUpdateFetchQuery($request, $parentEntity, $requestedRelations);

foreach ($entities as $entity) {
/** @var Model $entity */
$this->authorize($this->resolveAbility('update'), [$entity, $parentEntity]);
Expand All @@ -219,6 +219,9 @@ protected function batchUpdateWithTransaction(Request $request, $parentKey)
Arr::get($resource, 'pivot', [])
);

$entityQuery = $this->buildUpdateFetchQuery(
$request, $parentEntity, $requestedRelations
);
$entity = $this->runUpdateFetchQuery(
$request, $entityQuery, $parentEntity, $entity->{$this->keyName()}
);
Expand Down Expand Up @@ -400,8 +403,6 @@ protected function batchDestroyWithTransaction(Request $request, $parentKey)
$query = $this->buildBatchDestroyFetchQuery($request, $parentEntity, $requestedRelations, $softDeletes);
$entities = $this->runBatchDestroyFetchQuery($request, $query, $parentEntity);

$entityQuery = $this->buildStoreFetchQuery($request, $parentEntity, $requestedRelations);

foreach ($entities as $entity) {
/** @var Model $entity */
$this->authorize($this->resolveAbility($forceDeletes ? 'forceDelete' : 'delete'), [$entity, $parentEntity]);
Expand All @@ -412,6 +413,9 @@ protected function batchDestroyWithTransaction(Request $request, $parentKey)
$this->performDestroy($entity);

if ($softDeletes) {
$entityQuery = $this->buildDestroyFetchQuery(
$request, $parentEntity, $requestedRelations, $softDeletes
);
$entity = $this->runDestroyFetchQuery(
$request, $entityQuery, $parentEntity, $entity->{$this->keyName()}
);
Expand Down Expand Up @@ -569,8 +573,6 @@ protected function batchRestoreWithTransaction(Request $request, $parentKey)
$query = $this->buildBatchRestoreFetchQuery($request, $parentEntity, $requestedRelations);
$entities = $this->runBatchRestoreFetchQuery($request, $query, $parentEntity);

$entityQuery = $this->buildRestoreFetchQuery($request, $parentEntity, $requestedRelations);

foreach ($entities as $entity) {
/** @var Model $entity */
$this->authorize($this->resolveAbility('restore'), [$entity, $parentEntity]);
Expand All @@ -579,6 +581,9 @@ protected function batchRestoreWithTransaction(Request $request, $parentKey)

$this->performRestore($entity);

$entityQuery = $this->buildRestoreFetchQuery(
$request, $parentEntity, $requestedRelations
);
$entity = $this->runRestoreFetchQuery(
$request, $entityQuery, $parentEntity, $entity->{$this->keyName()}
);
Expand Down
13 changes: 5 additions & 8 deletions src/Concerns/HandlesStandardBatchOperations.php
Original file line number Diff line number Diff line change
Expand Up @@ -53,8 +53,6 @@ protected function batchStoreWithTransaction(Request $request)

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

$entityQuery = $this->buildStoreFetchQuery($request, $requestedRelations);

foreach ($resources as $resource) {
/**
* @var Model $entity
Expand All @@ -68,7 +66,9 @@ protected function batchStoreWithTransaction(Request $request)

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

$entityQuery = $this->buildStoreFetchQuery($request, $requestedRelations);
$entity = $this->runStoreFetchQuery($request, $entityQuery, $entity->{$this->keyName()});

$entity->wasRecentlyCreated = true;

$this->afterSave($request, $entity);
Expand Down Expand Up @@ -146,8 +146,6 @@ protected function batchUpdateWithTransaction(Request $request)
$query = $this->buildBatchUpdateFetchQuery($request, $requestedRelations);
$entities = $this->runBatchUpdateFetchQuery($request, $query);

$entityQuery = $this->buildUpdateFetchQuery($request, $requestedRelations);

foreach ($entities as $entity) {
/** @var Model $entity */
$this->authorize($this->resolveAbility('update'), $entity);
Expand All @@ -165,6 +163,7 @@ protected function batchUpdateWithTransaction(Request $request)

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

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

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

$entityQuery = $this->buildDestroyFetchQuery($request, $requestedRelations, $softDeletes);

foreach ($entities as $entity) {
/**
* @var Model $entity
Expand All @@ -313,6 +310,7 @@ protected function batchDestroyWithTransaction(Request $request)
if ($softDeletes) {
$this->beforeDestroyFresh($request, $entity);

$entityQuery = $this->buildDestroyFetchQuery($request, $requestedRelations, $softDeletes);
$entity = $this->runDestroyFetchQuery($request, $entityQuery, $entity->{$this->keyName()});
}
} else {
Expand Down Expand Up @@ -421,8 +419,6 @@ protected function batchRestoreWithTransaction(Request $request)
$query = $this->buildBatchRestoreFetchQuery($request, $requestedRelations);
$entities = $this->runBatchRestoreFetchQuery($request, $query);

$entityQuery = $this->buildRestoreFetchQuery($request, $requestedRelations);

foreach ($entities as $entity) {
/**
* @var Model $entity
Expand All @@ -435,6 +431,7 @@ protected function batchRestoreWithTransaction(Request $request)

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

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

$this->afterRestore($request, $entity);
Expand Down

0 comments on commit c264c6a

Please sign in to comment.