diff --git a/packages/actions/src/Exports/Jobs/PrepareCsvExport.php b/packages/actions/src/Exports/Jobs/PrepareCsvExport.php index cd6525c928e..8c3350e2217 100644 --- a/packages/actions/src/Exports/Jobs/PrepareCsvExport.php +++ b/packages/actions/src/Exports/Jobs/PrepareCsvExport.php @@ -69,13 +69,18 @@ public function handle(): void if ($databaseConnection->getDriverName() === 'pgsql') { $originalOrders = collect($query->getQuery()->orders) - ->reject(fn (array $order): bool => in_array($order['column'] ?? null, [$keyName, $qualifiedKeyName])) + ->reject(fn (array $order): bool => in_array($order['column'] ?? null, [$qualifiedKeyName])) ->unique('column'); /** @var array $originalBindings */ $originalBindings = $query->getRawBindings(); - $query->reorder($qualifiedKeyName); + if (! empty($originalOrders->all())) { + $query->reorder($originalOrders[0]['column'], $originalOrders[0]['direction']); + $originalOrders->forget(0); + } else { + $query->reorder($qualifiedKeyName); + } foreach ($originalOrders as $order) { if (blank($order['column'] ?? null) || blank($order['direction'] ?? null)) { @@ -144,7 +149,10 @@ public function handle(): void $chunkKeySize = $this->chunkSize * 10; $baseQuery = $query->toBase(); - $baseQuery->distinct($qualifiedKeyName); + + if (in_array($query->getQuery()->orders[0]['column'] ?? null, [$keyName, $qualifiedKeyName])) { + $baseQuery->distinct($qualifiedKeyName); + } /** @phpstan-ignore-next-line */ $baseQueryOrders = $baseQuery->orders ?? [];