What changed in Laravel from 12 to 13

14 releases numbered after v12.69.1 up to and including v13.30.1, stable releases only. v12.69.1 and v13.30.1 are the newest stable releases of 12 and 13 we track; this page follows them as new ones ship.

192 changes across 14 releases · 2 landed on more than one version

Added 67

v13.30.1

  • Add connection and queue to WorkerStopping event
  • Add insertOrIgnoreReturning() to the Eloquent builder passthru
  • Add dropVectorIndex() to the schema blueprint

v13.30.0

  • Output the worker stop reason in queue:work
  • Ability to opt out of vendor/default commands in DevCommands
  • Support Microsoft SQL Server DSN connection strings
  • Cloud enhancements
  • Allow retrieving command by name without resolving all commands
  • Expose methods
  • Add totalXSize methods to Cloud Queue
  • Add chunkBy to collections
  • Add createPayloadUsing directly to the queue manager
  • Set visibility on files that only exist on a read-through disk's fallback

v13.27.0

  • Add `refreshForUpdate()` method to Eloquent models
  • Add Queue `totalXSize` methods
  • Add `whereBinary()` to the query builder
  • Add `stop()` and `ensureNotTimedOut()` to `FakeInvokedProcess`
  • Introduce `InteractsWithTestCaseLifecycle::flushState()`
  • Introduce a Cloud facade
  • Add Postgres keepalive DSN options
  • Allow masking query bindings in exception messages

v13.26.0

  • Add JobReleased event to Worker
  • Add managedQueues() to the Cloud queue
  • Add closure support to wherePivot and orWherePivot
  • Add orWhereKey and orWhereKeyNot to Eloquent Builder
  • Add debounceable queued listeners
  • Add dedicated exception for idle process timeouts
  • Add process fake assertion helpers
  • Introduce Queue::forward()
  • Add getRelatedClass to Relation

v13.25.0

  • Add foreignUlidFor schema helper
  • Add uuid to queue fake for inspection methods
  • Add a UniqueJobSkipped event
  • Add the timeout in JobTimedOut

v13.24.0

  • Add modelKeys() to Eloquent query builder
  • Add an array_keys validation rule
  • Add dominant color detection to image driver
  • Add HEIC and additional AVIF support
  • Add NumberPrompt fallback

v13.23.0

  • Add a monthly log driver
  • Add SES tenant support to the SES v2 transport
  • Add monthly channel to logging config

v13.22.0

  • Add exception to JobReleasedAfterException
  • Implement creationTimeOfOldestPendingJob on the QueueFake
  • Support stream bodies in HTTP fake responses
  • Allow RateLimiter to be Macroable
  • Add a #[BindWhen()] attribute to conditionally bind into the container
  • Add multi-queue support to queue:clear command
  • Allow faking DNS lookups in validation rules
  • Support Delay attribute when using Bus::batch & bulk

v13.20.0

  • Add missing $separator parameter to Storage facade append/prepend docblocks
  • Add beforePushing and afterPushing methods on QueueFake class
  • Add memory usage to WorkerStopping
  • Add assertEmpty to the Storage facade
  • Add first-party support for image processing
  • Add WithoutMiddleware controller middleware attribute
  • Add incrementEachQuietly and decrementEachQuietly to Eloquent models
  • Add ability to set session prefix for Redis
  • Add #[SensitiveParameter] to parameters carrying secrets

v13.19.0

  • Support inspecting reserved jobs on the queue fake
  • Add `reduceInto` method to collection
  • Add `counted` method to `Str` and `Stringable`
  • Add `query` and `queryJson` HTTP testing helpers
  • Add `Http::query()` method to the HTTP client

v13.18.1

  • Add input() method to console commands
  • Support inspecting delayed jobs on the queue fake
  • Add Release queue middleware
Changed 52

v13.30.0

  • Confine Storage::path() to the configured disk root
  • Use spl_object_id over hash
  • Disable html by default on Laravel exception page tooltip

v13.27.0

  • Prevent duplicate scoped instance registrations
  • Add MariaDB support for vector distance queries
  • Make eager-load constraint closures static to break Builder reference cycle
  • Share cached AWS credentials across processes for SQS queue connections

v13.26.0

  • Accept enums in inOrderOf()
  • Surface paused queues in the queue worker output
  • Pass a connector to PhpRedisClusterConnection so it can rebuild its client
  • Allow read through filesystems to optionally not copy
  • Allow some Redis commands to retry on transient failures
  • Remove the pinned @laravel/multiplex version
  • Make process pools iterable
  • Support Guzzle 8
  • Support array commands in process fake assertions
  • Promote nested data to top-level managed queue event
  • Preserve input key order when merging files in Request::all()

v13.25.0

  • Improve return type for Arr::prependKeysWith()
  • Respect after-commit dispatch when bulk pushing to DatabaseQueue
  • Configure a socket timeout for the Cloud log driver
  • Respect backed enum queue names when queueing mailables

v13.24.0

  • Respect job delays when bulk pushing to QueueFake
  • Use immutable timestamps in batch testing fakes
  • Avoid rebuilding every cached Route on CompiledRouteCollection lookups
  • Re-evaluate unmatched BindWhen attributes
  • Memoize TestResponse::decodeResponseJson()
  • Escape single quotes in Postgres JSON path attributes
  • Preserve relation constraints when resolving attributes during noConstraints
  • Respect job delays when bulk pushing to FailoverQueue
  • Fix validation stalling for minutes on large arrays

v13.23.0

  • Improve types in Image class
  • Allow ImageManager fromStorage disk to accept enums
  • Improve Collection::select generic types
  • Allow ->using(...) in ->change() migrations for PostgreSQL compatibility
  • Use a timing-safe comparison for the maintenance mode bypass secret

v13.22.0

  • Use new Stringable() instead of Str::of()/str() internally
  • Optimize Str::ucfirst and Str::lcfirst using native PHP 8.4 functions
  • Mark HTTP testing credentials as sensitive

v13.20.0

  • Make MailFake::assertQueuedTimes() public
  • Sync more getter return types with their property generics
  • Normalize HTTP client request header lookups
  • Support null for shortcut field in return type array for HasParameters::getOptions
  • Add capitalize parameter to Stringable::initials()

v13.19.0

  • Ensure `deletedAtColumn` is passed to `assertSoftDeleted` and `assertNotSoftDeleted`
  • Pop managed queue jobs from the cloud-agent instead of SQS
  • Terminate default style value with a semicolon in ComponentAttributeBag::merge()
  • Allow mail config options without name
  • Send bulk SQS jobs via SendMessageBatch

v13.18.1

  • Allow assertDatabaseEmpty to handle iterable
  • Handle api / json routes with Down (Maintenance) command
  • Update docblocks of Blueprint foreignUuid and foreignUlid to match foreignId
Fixed 71

v13.30.1

  • Fix limit() being ignored on update() for SQL Server
  • Prevent orphaned Redis tagged cache entries

v13.30.0

  • Avoid quadratic wildcard rule expansion
  • Fix resource loading
  • Fix incorrect $startTime type in Worker::stopIfNecessary docblock
  • Restore the facade application after route:cache boots a fresh application
  • Gracefully handle missing param value or strings with request clamps
  • Restore default database connection when seeding fails

v13.27.0

  • Throw on unsuccessful responses when creating images from URLs
  • Re-introduce orWhereKey() and orWhereKeyNot() without breaking Builder subclasses
  • Don't force release a unique lock the job never acquired
  • Fix `quietly()` making `throw()` unreachable on process results
  • Guard against `false` returns in `PhpRedisConnection::mget()` and `hmget()`
  • Move and copy files that only exist on a read-through disk's fallback
  • Fix route name lost when RouteRegistrar action is not callable
  • Start a new max wait window after a debounced job runs

v13.26.0

  • Respect readonly=false in Microsoft SQL Server configuration
  • Avoid cross-slot reads when checking paused queues
  • Only register pail dev command when installed
  • Fix constantly asking to install multiplex and starting vite on project without vite
  • Fix Redis pipeline facade annotation
  • Stricten upload to be fetch only from request's query string for temporary upload urls
  • Improves in validation rule from getting bypass via loose comparison
  • Retry timed-out cloud agent long-polls
  • Scan every master node in phpredis cluster connections
  • Fix uncaptured setTestNow now() reuse in tests
  • Report seeder progress in db:seed command when a specific class is specified
  • Fix infinite scan loop when pruning stale cache tags on a Redis cluster
  • Keep the Redis connection usable when a pipeline or transaction fails
  • Escape single quotes in Postgres JSON path attributes
  • Prevent TypeError when JSON:API query parameters are arrays
  • Fix expectsQuestion() docblock to allow array answers
  • Rebuild the phpredis client after a cluster response error
  • Fix throwUnless() silently doing nothing when given a closure
  • Keep the assertion failure message when session errors are JSON serialized

v13.25.0

  • Prevent fatal errors when logging deprecations failsalso inv13.23.0
  • Fix Factory::insert() with a count of zero
  • Fix schedule:list timezone conversion for range, step, and wildcard cron expressionsalso inv13.23.0
  • Fix getMigrationBatches return type annotation
  • Ensure Container::call cleans up build stack after exceptions
  • Reject non-stream resources in HTTP fake response bodies
  • Fix incorrect image dimensions for HEIC
  • Fix Str::numbers() type annotation
  • Normalize enum keys in typed cache getters
  • Isolate cloud agent requests from global HTTP client configuration
  • Fix missing check for #[WithoutTimestamps] on model ignore touch
  • Restore missing model deletion for broadcast events
  • Skip unsupported values in LazyCollection::flip()

v13.24.0

  • Fix DumpCommand return type
  • Fix PendingProcess losing falsy command strings on run()/start()
  • Detect circular alias references in Container
  • Fix pagination edge cases
  • Prevent TypeError in Validator::validateDistinct()
  • Fix appended accessors receiving null in toArray()

v13.23.0

  • Fix null handling in Arr::last() method
  • Fix default handling in CookieJar::queued()

v13.22.0

  • Fix PHP extensions in sqlite workflow job
  • Check traits in resolveClassAttribute
  • Fix queue name parameter in Mailer::later()
  • Restore iterable support to Arr::every() and Arr::some()
  • Fix Cache::touch() expiration handling
  • Fix iterable support in Arr::last()

v13.20.0

  • Fix operator precedence in SqsQueue size fallbacks
  • Fix guessResourceName() namespace collision when class name is a substring of a parent namespace segment
  • Fix Str::containsAll() returning true for an empty needles array
  • Fix stale transformations being reapplied when branching an Image after toBytes()
  • Fix Number::forHumans() and abbreviate() returning "-0" for tiny negative values
  • Fix providesTemporaryUploadUrls should return true for s3 driver

v13.18.1

  • Respect channel name for on-demand log stacks
  • Respect the encoding in Str::mask() when building the end of the string
  • Support scalar Predis retry config to allow config:cache
Removed 2

v13.26.1

  • Remove orWhereKey and orWhereKeyNot methods from Eloquent Builder

v13.19.0

  • Remove deprecated `StaticCallOnNonStaticToInstanceCallRector` fixer rule

2 releases in the range carry no categorized changes yet: v13.29.0v13.21.1. Their original notes, where the vendor published any, are below.

Original release notes, newest first

The list above is our reading of these notes; the originals from Laravel are here, one fold per release.

v13.30.1

View originalPermalink

v13.30.0

View originalPermalink

v13.29.0

The vendor published no notes for this release.

View originalPermalink

v13.27.0

View originalPermalink

v13.26.1

View originalPermalink

v13.26.0

View originalPermalink

v13.25.0

View originalPermalink

v13.24.0

View originalPermalink

v13.23.0

View originalPermalink

v13.22.0

View originalPermalink

v13.21.1

The vendor published no notes for this release.

View originalPermalink

v13.20.0

View originalPermalink

v13.19.0

View originalPermalink

v13.18.1

View originalPermalink