diff --git a/src/Storage/DatabaseEntriesRepository.php b/src/Storage/DatabaseEntriesRepository.php index 3d736d425..e9cbb84fa 100644 --- a/src/Storage/DatabaseEntriesRepository.php +++ b/src/Storage/DatabaseEntriesRepository.php @@ -3,9 +3,11 @@ namespace Laravel\Telescope\Storage; use DateTimeInterface; +use Illuminate\Database\QueryException; use Illuminate\Database\UniqueConstraintViolationException; use Illuminate\Support\Collection; use Illuminate\Support\Facades\DB; +use Illuminate\Support\Facades\Schema; use Laravel\Telescope\Contracts\ClearableRepository; use Laravel\Telescope\Contracts\EntriesRepository as Contract; use Laravel\Telescope\Contracts\PrunableRepository; @@ -378,13 +380,22 @@ public function prune(DateTimeInterface $before, $keepExceptions) */ public function clear() { - do { - $deleted = $this->table('telescope_entries')->take($this->chunkSize)->delete(); - } while ($deleted !== 0); - - do { - $deleted = $this->table('telescope_monitoring')->take($this->chunkSize)->delete(); - } while ($deleted !== 0); + try { + Schema::disableForeignKeyConstraints(); + + $this->table('telescope_entries')->truncate(); + $this->table('telescope_monitoring')->truncate(); + } catch (QueryException) { + do { + $deleted = $this->table('telescope_entries')->take($this->chunkSize)->delete(); + } while ($deleted !== 0); + + do { + $deleted = $this->table('telescope_monitoring')->take($this->chunkSize)->delete(); + } while ($deleted !== 0); + } finally { + Schema::enableForeignKeyConstraints(); + } } /**