mirror of
https://github.com/filamentphp/filament.git
synced 2026-09-24 15:42:09 +08:00
Merge pull request #15181 from bzy107/fix-order-due-to-using-chunks
Fix: Add conditions to DISTINCT and modify reorder conditions in PostgreSQL
This commit is contained in:
@@ -69,13 +69,18 @@ class PrepareCsvExport implements ShouldQueue
|
||||
|
||||
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 => ($order['column'] ?? null) === $qualifiedKeyName)
|
||||
->unique('column');
|
||||
|
||||
/** @var array<string, mixed> $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 @@ class PrepareCsvExport implements ShouldQueue
|
||||
$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 ?? [];
|
||||
|
||||
Reference in New Issue
Block a user