Skip to content

Commit 48f034d

Browse files
committed
fix: Eager loads relation on non lazy mode
1 parent d757930 commit 48f034d

File tree

1 file changed

+15
-3
lines changed

1 file changed

+15
-3
lines changed

src/Jobs/DataTableExportJob.php

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
use Illuminate\Contracts\Queue\ShouldBeUnique;
1111
use Illuminate\Contracts\Queue\ShouldQueue;
1212
use Illuminate\Contracts\Support\Arrayable;
13+
use Illuminate\Database\Eloquent\Builder;
14+
use Illuminate\Database\Eloquent\Model;
1315
use Illuminate\Foundation\Bus\Dispatchable;
1416
use Illuminate\Http\File;
1517
use Illuminate\Queue\InteractsWithQueue;
@@ -112,19 +114,29 @@ public function handle(): void
112114

113115
$writer->addRow(Row::fromValues($headers));
114116

117+
$query = $dataTable->getFilteredQuery();
118+
119+
if ($query instanceof Builder) {
120+
$eagerLoads = array_keys($query->getEagerLoads());
121+
}
122+
115123
if ($this->usesLazyMethod()) {
116124
$chunkSize = 1_000;
117125
if (is_int(config('datatables-export.chunk'))) {
118126
$chunkSize = config('datatables-export.chunk');
119127
}
120-
$query = $dataTable->getFilteredQuery()->lazy($chunkSize);
128+
$results = $query->lazy($chunkSize);
121129
} else {
122-
$query = $dataTable->getFilteredQuery()->cursor();
130+
$results = $query->cursor();
123131
}
124132

125-
foreach ($query as $row) {
133+
foreach ($results as $row) {
126134
$cells = [];
127135

136+
if ($row instanceof Model && ! empty($eagerLoads)) {
137+
$row->loadMissing($eagerLoads);
138+
}
139+
128140
$row = $row instanceof Arrayable ? $row->toArray() : (array) $row;
129141

130142
$defaultDateFormat = 'yyyy-mm-dd';

0 commit comments

Comments
 (0)