Skip to content

Latest commit

 

History

History
2013 lines (1464 loc) · 152 KB

CHANGELOG-8.x.md

File metadata and controls

2013 lines (1464 loc) · 152 KB

Release Notes for 8.x

Added

  • Added class and method to create cross joined sequences for factories (#40542)
  • Added Transliterate shortcut to the Str helper (#40681)
  • Added array_keys validation rule (#40720)

Fixed

  • Prevent job serialization error in Queue (#40625)
  • Fixed autoresolving model name from factory (#40616)
  • Fixed : strtotime Epoch doesn't fit in PHP int (#40690)
  • Fixed Stringable ucsplit (#40694, #40699)

Changed

  • Server command: Allow xdebug auto-connect to listener feature (#40673)
  • respect null driver in QueueServiceProvider (9435827, 56d433a)
  • Allow to push and prepend config values on new keys (#40723)

Added

  • Added Illuminate/Support/Stringable::scan() (#40472)
  • Allow caching to be disabled for virtual attributes accessors that return an object (#40519)
  • Added better bitwise operators support (#40529, def671d)
  • Added getOrPut on Collection (#40535)
  • Improve PhpRedis flushing (#40544)
  • Added Illuminate/Support/Str::flushCache() (#40620)

Fixed

  • Fixed Str::headline/Str::studly with unicode and add Str::ucsplit method (#40499)
  • Fixed forgetMailers with MailFake (#40495)
  • Pruning Models: Get the default path for the models from a method instead (#40539)
  • Fix flushdb for predis cluste (#40446)
  • Avoid undefined array key 0 error (#40571)

Changed

  • Allow whitespace in PDO dbname for PostgreSQL (#40483)
  • Allows authorizeResource method to receive arrays of models and parameters (#40516)
  • Inverse morphable type and id filter statements to prevent SQL errors (#40523)
  • Bump voku/portable-ascii to v1.6.1 (#40588, #40610)

Added

  • Allow enums as entity_type in morphs (#40375)
  • Added support for specifying a route group controller (#40276)
  • Added phpredis serialization and compression config support (#40282)
  • Added a BladeCompiler::render() method to render a string with Blade (#40425)
  • Added a method to sort keys in a collection using a callback (#40458)

Changed

  • Convert "/" in -e parameter to "" in Illuminate/Foundation/Console/ListenerMakeCommand (#40383)

Fixed

  • Throws an error upon make:policy if no model class is configured (#40348)
  • Fix forwarded call with named arguments in Illuminate/Filesystem/FilesystemAdapter (#40421)
  • Fix 'strstr' function usage based on its signature (#40457)

Added

  • Added onLastPage method to the Paginator (#40265)
  • Allow method typed variadics dependencies (#40255)
  • Added ably/ably-php to composer.json to suggest (#40277)
  • Implement Full-Text Search for MySQL & PostgreSQL (#40129)
  • Added whenContains and whenContainsAll to Stringable (#40285)
  • Support action_level configuration in LogManager (#40305)
  • Added whenEndsWith(), whenExactly(), whenStartsWith(), etc to Stringable (#40320)
  • Makes it easy to add additional options to PendingBatch (#40333)
  • Added method to MigrationsStarted/MigrationEnded events (#40334)

Fixed

  • Fixed failover mailer when used with Mailgun & SES mailers (#40254)
  • Fixed digits_between with fractions (#40278)
  • Fixed cursor pagination with HasManyThrough (#40300)
  • Fixed virtual attributes (29a6692)
  • Fixed timezone option in schedule:list command (#40304)
  • Fixed Doctrine type mappings creating too many connections (#40303)
  • Fixed of resolving Blueprint class out of the container (#40307)
  • Handle type mismatch in the enum validation rule (#40362)

Changed

  • Automatically add event description when scheduling a command (#40286)
  • Update the Pluralizer Inflector instanciator (#40336)

Added

  • Added pipeThrough collection method (#40253)

Changed

  • Run clearstatcache after deleting file and asserting Storage using exists/missing (#40257)
  • Avoid constructor call when fetching resource JSON options (#40261)

Added

  • Added schedule:clear-mutex command (#40135)
  • Added ability to define extra default password rules (#40137)
  • Added a mergeIfMissing method to the Illuminate Http Request class (#40116)
  • Added Illuminate/Support/MultipleInstanceManager (40913ac)
  • Added SimpleMessage::lines() (#40147)
  • Added Illuminate/Support/Testing/Fakes/BusFake::assertBatchCount() (#40217)
  • Enable only-to-others functionality when using Ably broadcast driver (#40234)
  • Added ability to customize json options on JsonResource response (#40208)
  • Added Illuminate/Support/Stringable::toHtmlString() (#40247)

Changed

  • Improve support for custom Doctrine column types (#40119)
  • Remove an useless check in Console Application class (#40145)
  • Sort collections by key when first element of sort operation is string (even if callable) (#40212)
  • Use first host if multiple in Illuminate/Database/Console/DbCommand::getConnection() (#40226)
  • Improvement in the Reflector class (#40241)

Fixed

  • Clear recorded calls when calling Http::fake() (#40194)
  • Fixed attribute casting (#40245, c0d9735)

Fixed

  • Fixed prune command with default options (#40127)

Added

  • Attribute Cast / Accessor Improvements (#40022)
  • Added Illuminate/View/Factory::renderUnless() (#40077)
  • Added datetime parsing to Request instance (#39945)
  • Make it possible to use prefixes on Predis per Connection (#40083)
  • Added rule to validate MAC address (#40098)
  • Added ability to define temporary URL macro for storage (#40100)

Fixed

  • Fixed possible out of memory error when deleting values by reference key from cache in Redis driver (#40039)
  • Added Illuminate/Filesystem/FilesystemManager::setApplication() (#40058)
  • Fixed arg passing in doesntContain (739d847)
  • Translate Enum rule message (#40089)
  • Fixed date validation (#40088)
  • Dont allow models and except together in PruneCommand.php (f62fe66)

Changed

  • Passthru Eloquent\Query::explain function to Query\Builder:explain for the ability to use database-specific explain commands (#40075)

Added

  • Added doesntContain method to Collection and LazyCollection (#40044, 3e3cbcf)

Reverted

Reverted

Added

  • Added possibility to customize child model route binding resolution (#39929)
  • Added Illuminate/Http/Client/Response::reason() (#39972)
  • Added an afterRefreshingDatabase test method (#39978)
  • Added unauthorized() and forbidden() to Illuminate/Http/Client/Response (#39979)
  • Publish view-component.stub in stub:publish command (#40007)
  • Added invisible modifier for MySQL columns (#40002)
  • Added Str::substrReplace() and Str::of($string)->substrReplace() methods (#39988)

Fixed

  • Fixed parent call in view (#39909)
  • Fixed request dump and dd methods (#39931)
  • Fixed php 8.1 deprecation in ValidatesAttributes::checkDateTimeOrder (#39937)
  • Fixed withTrashed on routes check if SoftDeletes is used in Model (#39958)
  • Fixes model:prune --pretend command for models with SoftDeletes (#39991)
  • Fixed SoftDeletes force deletion sets "exists" property to false only when deletion succeeded (#39987)
  • Fixed possible out of memory error when deleting values by reference key from cache in Redis driver (#39939)
  • Fixed Password validation failure to allow errors after min rule (#40030)

Changed

  • Fail enum validation with pure enums (#39926)
  • Remove redundant description & localize template (#39928)
  • Fixes reporting deprecations when logger is not ready yet (#39938)
  • Replace escaped dot with place holder in dependent rules parameters (#39935)
  • passthru from property to underlying query object (127334a)

Added

  • Added Illuminate/Support/Testing/Fakes/NotificationFake::assertSentTimes() (667cca8)
  • Added Conditionable trait to ComponentAttributeBag (#39861)
  • Added scheduler integration tests (#39862)
  • Added on-demand gate authorization (#39789)
  • Added countable interface to eloquent factory sequence (#39907, 1638472a, #39915)
  • Added Fulltext index for PostgreSQL (#39875)
  • Added method filterNulls() to Arr (#39921)

Fixed

  • Fixes AsEncrypted traits not respecting nullable columns (#39848, 4c32bf8)
  • Fixed http client factory class exists bugfix (#39851)
  • Fixed calls to Connection::rollBack() with incorrect case (#39874)
  • Fixed bug where columns would be guarded while filling Eloquent models during unit tests (#39880)
  • Fixed for dropping columns when using MSSQL as database (#39905)

Changed

  • Add proper paging offset when possible to sql server (#39863)
  • Correct pagination message in src/Illuminate/Pagination/resources/views/tailwind.blade.php (#39894)

Added

  • Added optional except parameter to the PruneCommand (#39749, be4afcc)
  • Added Illuminate/Foundation/Application::hasDebugModeEnabled() (#39755)
  • Added Illuminate/Support/Facades/Event::fakeExcept() and Illuminate/Support/Facades/Event::fakeExceptFor() (#39752)
  • Added aggregate method to Eloquent passthru (#39772)
  • Added undot() method to Arr helpers and Collections (#39729)
  • Added reverse method to Str (#39816)
  • Added possibility to customize type column in database notifications using databaseType method (#39811)
  • Added Fulltext Index (#39821)

Fixed

  • Fixed bus service provider when loaded outside of the framework (#39740)
  • Fixes logging deprecations when null driver do not exist (#39809)

Changed

  • Validate connection name before resolve queue connection (#39751)
  • Bump Symfony to 5.4 (#39827)
  • Optimize the execution time of the unique method (#39822)

Added

  • Added Illuminate/Foundation/Testing/Concerns/InteractsWithContainer::forgetMock() (#39713)
  • Added custom pagination information in resource (#39600)

Revert

Added

  • Added .phar to blocked PHP extensions in validator (#39666)
  • Allow a Closure to be passed as a ttl in Cache remember() method (#39678)
  • Added Prohibits validation rule to dependentRules property (#39677)
  • Implement lazyById in descending order (#39646)

Fixed

  • Fixed Illuminate/Auth/Notifications/ResetPassword::toMail() (969f101)
  • Fixed assertSoftDeleted & assertNotSoftDeleted (#39673)

Added

  • Added extra method in PasswortReset for reset URL to match the structure of VerifyEmail (#39652)
  • Added support for countables to the Illuminate/Support/Pluralizer::plural() (#39641)
  • Allow users to specify options for migrate:fresh for DatabaseMigration trait (#39637)

Fixed

  • Casts $value to the int only when not null in Illuminate/Database/Query/Builder::limit() (#39644)

Changed

  • Use parents to resolve middleware priority in SortedMiddleware (#39647)

Added

  • Added declined and declined_if validation rules (#39579)
  • Arrayable/collection support for Collection::splice() replacement param (#39592)
  • Introduce @js() directive (#39522)
  • Enum casts accept backed values (#39608)
  • Added a method to the Macroable trait that removes all configured macros. (#39633)

Fixed

  • Fixed auto-generated Markdown views (#39565)
  • DB command: Cope with missing driver parameters for mysql (#39582)
  • Fixed typo in Connection property name in Illuminate/Database/Connection (#39590)
  • Fixed: prevent re-casting of enum values (#39597)
  • Casts value to the int in Illuminate/Database/Query/Builder::limit() (62273d2)
  • Fix $component not being reverted if component doesn't render (#39595)

Changed

  • make:model --all flag would auto-fire make:controller with --requests (#39578)
  • Allow assertion of multiple JSON validation errors. (#39568)
  • Ensure cache directory permissions (#39591)
  • Update placeholders for stubs (#39527)

Changed

  • Use all in Illuminate/Database/Query/Builder::cleanBindings() (74dcc02)

Fixed

  • Fixed problem with fallback in Router (5fda5a3)

Added

  • New flag --requests -R to make:controller and make:model Commands (#39120, 8fbfc9f)
  • Allows Stringable objects as middleware. (#39439, #39449)
  • Introduce Js for encoding data to use in JavaScript (#39389, #39460, bbf47d5)
  • Added new lost connection error message for sqlsrv (#39466)
  • Allow can method to be chained onto route for quick authorization (#39464)
  • Publish provider.stub in stub:publish command (#39491)
  • Added Illuminate/Support/NamespacedItemResolver::flushParsedKeys() (#39490)
  • Accept enums for insert update and where (#39492)
  • Fifo support for queue name suffix (#39497, 12e47bb)

Changed

  • Dont cache ondemand loggers (5afa0f1, bc50a9b)
  • Enforce implicit Route Model scoping (#39440)
  • Ensure event mutex is always removed (#39498)
  • Added missing "flags" to redis zadd options list... (#39538)

Added

  • Improve content negotiation for exception handling (#39385)
  • Added support for SKIP LOCKED to MariaDB (#39396)
  • Custom cast string into Stringable (#39410)
  • Added Illuminate/Support/Str::mask() (#39393)
  • Allow model attributes to be casted to/from an Enum (#39315)
  • Added an Enum validation rule (#39437)
  • Auth: Allows to use a callback in credentials array (#39420)
  • Added success and failure command assertions (#39435)

Fixed

  • Fixed CURRENT_TIMESTAMP as default when changing column (#39377)
  • Make accept header comparison case-insensitive (#39413)
  • Fixed regression with capitalizing translation params (#39424)

Changed

  • Added bound check to env resolving in Illuminate/Foundation/Application::runningUnitTests() (#39434)

Reverted

Fixed

  • Fixed code to address different connection strings for MariaDB in the database queue driver (#39374)
  • Fixed rate limiting unicode issue (#39375)
  • Fixed bug with closure formatting in Illuminate/Testing/Fluent/Concerns/Matching::whereContains() (37217d5)

Refactoring

  • Change whereStartsWith, DocBlock to reflect that array is supported (#39370)

Added

  • Added ThrottleRequestsWithRedis to $middlewarePriority (#39316)
  • Added Illuminate/Database/Schema/ForeignKeyDefinition::restrictOnUpdate() (#39350)
  • Added ext-bcmath as an extension suggestion to the composer.json (#39360)
  • Added TestResponse::dd (#39359)

Fixed

  • TaggedCache flush should also remove tags from cache (#39299)
  • Fixed model serialization on anonymous components (#39319)

Changed

  • Changed to Guess database factory model by default (#39310)

Added

  • Added support for MariaDB to skip locked rows with the database queue driver (#39311)
  • Added PHP 8.1 Support (#39034)

Fixed

  • Fixed translation bug (#39298)
  • Fixed Illuminate/Database/DetectsConcurrencyErrors::causedByConcurrencyError() when code is intager (#39280)
  • Fixed unique bug in Bus (#39302)

Changed

  • Only select related columns by default in CanBeOneOfMany::ofMany (#39307)

Added

  • Added withoutDeprecationHandling to testing (#39261)
  • Added method for on-demand log creation (#39273)
  • Added dateTime to columns that don't need character options (#39269)
  • Added AssertableJson::hasAny (#39265)
  • Added Arr::isList() method (#39277)
  • Apply withoutGlobalScope in CanBeOneOfMany subqueries (#39295)
  • Added Illuminate/Support/Testing/Fakes/BusFake::assertNothingDispatched() (#39286)

Reverted

Added

  • Allow queueing application and service provider callbacks while callbacks are already being processed (#39175, 63dab48)
  • Added ability to validate one of multiple date formats (#39170)
  • Re-add update from support for PostgreSQL (#39151)
  • Added Illuminate/Collections/Traits/EnumeratesValues::reduceSpread() (a01e9ed)
  • Added Illuminate/Testing/TestResponse::assertRedirectContains() (#39233, ff340a6)
  • Added gate policy callback (#39185)
  • Allow Remember Me cookie time to be overriden (#39186)
  • Adds --test and --pest options to various make commands (#38997)
  • Added new lost connection message to DetectsLostConnections for Vapor (#39209)
  • Added Illuminate/Support/Testing/Fakes/NotificationFake::assertSentOnDemand() (#39203)
  • Added Subset in request's collect (#39191)
  • Added Conditional trait to Eloquent Factory (#39228)
  • Added a way to skip count check but check $callback at the same time for AssertableJson->has() (#39224)
  • Added Illuminate/Support/Str::headline() (#39174)

Deprecated

  • Deprecate reduceMany in favor of reduceSpread in Illuminate/Collections/Traits/EnumeratesValues (#39201)

Fixed

  • Fixed HasOneOfMany with callback issue (#39187)

Changed

  • Logs deprecations instead of treating them as exceptions (#39219)

Added

  • Added reduceMany to Collections (#39078)
  • Added Illuminate/Support/Stringable::stripTags() (#39098)
  • Added Illuminate/Console/OutputStyle::getOutput() (#39099)
  • Added lang_path helper function (#39103)
  • Added @aware blade directive (#39100)
  • New JobRetrying event dispatched (#39097)
  • Added throwIf method in Client Response (#39148)
  • Added Illuminate/Collections/Collection::hasAny() (#39155)

Fixed

  • Fixed route groups with no prefix on PHP 8.1 (#39115)
  • Fixed code locating Bearer token in InteractsWithInput (#39150)

Changed

  • Refactoring Illuminate/Log/LogManager::prepareHandler() (#39093)
  • Flush component state when done rendering in View (04fc7c2)
  • Ignore tablespaces in dump (#39126)
  • Update SchemaState Process to remove timeout (#39139)

Added

  • Added new lost connection message to DetectsLostConnections (#39028)
  • Added whereBelongsTo() Eloquent builder method (#38927)
  • Added Illuminate/Foundation/Testing/Wormhole::minute() (#39050)

Fixed

  • Fixed castable value object not serialized correctly (#39020)
  • Fixed casting to string on PHP 8.1 (#39033)
  • Mail empty address handling (#39035)
  • Fixed NotPwnedVerifier failures (#39038)
  • Fixed LazyCollection#unique() double enumeration (#39041)

Changed

  • HTTP client: only allow a single User-Agent header (#39085)

Added

  • Added singular syntactic sugar to wormhole (#38815)
  • Added a few PHP 8.1 related changes (#38404, #38961)
  • Dispatch events when maintenance mode is enabled and disabled (#38826)
  • Added assertNotSoftDeleted Method (#38886)
  • Adds new RefreshDatabaseLazily testing trait (#38861)
  • Added --pretend option for model:prune command (#38945)
  • Make PendingMail Conditionable (#38942)
  • Adds --pest option when using the make:test artisan command (#38966)

Reverted

Fixed

  • Fix getDirty method when using AsArrayObject / AsCollection (#38869)
  • Fix sometimes conditions that add rules for sibling values within an array of data (#38899)
  • Fixed Illuminate/Validation/Rules/Password::passes() (#38962)
  • Fixed for custom date castable and database value formatting (#38994)

Changed

  • Make mailable assertions fluent (#38850)
  • Allow request input to be retrieved as a collection (#38832)
  • Allow index.blade.php views for anonymous components (#38847)
  • Changed *ofMany to decide relationship name when it is null (#38889)
  • Ignore trailing delimiter in cache.headers options string (#38910)
  • Only look for files ending with .php in model:prune (#38975)
  • Notification assertions respect shouldSend method on notification (#38979)
  • Convert middleware to array when outputting as JSON in /RouteListCommand (#38953)

Added

  • Added posibility compare custom date/immutable_date using date comparison (#38720)
  • Added policy option to make:model (#38725
  • Allow tests to utilise the null logger (#38785)
  • Added deleteOrFail to Model (#38784)
  • Added assertExists testing method (#38766)
  • Added forwardDecoratedCallTo to Illuminate/Database/Eloquent/Relations/Relation (#38800)
  • Adding support for using a different Redis DB in a Sentinel setup (#38764)

Changed

  • Return on null in Illuminate/Queue/Queue::getJobBackoff() (27bcf13)
  • Provide psr/simple-cache-implementation (#38767)
  • Use lowercase for hmac hash algorithm (#38787)

Added

  • Added the valueOfFail() Eloquent builder method (#38707)

Reverted

Added

  • Allow quiet creation (e9cd94c)
  • Added merge() function to ValidatedInput (#38640)
  • Added support for disallowing class morphs (#38656)
  • Added AssertableJson::each() method (#38684)
  • Added Eloquent builder whereMorphedTo method to streamline finding models morphed to another model (#38668)

Fixed

  • Silence Validator Date Parse Warnings (#38652)

Changed

  • Remove mapWithKeys from HTTP Client headers() methods (#38643)
  • Return a new or existing guzzle client based on context in Illuminate/Http/Client/PendingRequest::buildClient() (#38642)
  • Show a pretty diff for assertExactJson() (#38655)
  • Lowercase cipher name in the Encrypter supported method (#38693)

Added

  • Added updateOrFail method to Model (#38592)
  • Make mail stubs more configurable (#38596)
  • Added prohibits validation (#38612)

Changed

Added

  • Added exclude validation rule (#38537)
  • Allow passing when callback to Http client retry method (#38531)
  • Added Illuminate/Testing/TestResponse::assertUnprocessable() (#38553)
  • Added the password reset URL to the toMailCallback (#38552)
  • Added a simple where helper for querying relations (#38499)
  • Allow sync broadcast via method (#38557)
  • Make $validator->sometimes() item aware to be able to work with nested arrays (#38443)

Fixed

  • Fixed Blade component falsy slots (#38546)
  • Keep backward compatibility with custom ciphers in Illuminate/Encryption/Encrypter::generateKey() (#38556)
  • Fixed bug discarding input fields with empty validation rules (#38563)

Changed

  • Don't iterate over all collection in Collection::firstOrFail (#38536)
  • Error out when detecting incompatible DBAL version (#38543)

Added

  • Added firstOrFail to Illuminate\Support\Collections and Illuminate\Support\LazyCollections (#38420)
  • Support route caching with trashed bindings (c3ec2f2)
  • Allow only keys directly on safe in FormRequest (5e4ded8)
  • Added default rules in conditional rules (#38450)
  • Added fullUrlWithoutQuery method to Request (#38482)
  • Added --implicit (and -i) option to make:rule (#38480)
  • Added colon port support in serve command host option (#38522)

Changed

  • Testing: Access component properties from the return value of $this->component() (#38396, 42a71fd)
  • Update InteractsWithInput::bearerToken() (#38426)
  • Minor improvements to validation assertions API (#38422)
  • Blade component slot attributes (#38372)
  • Convenient methods for rate limiting (2f93c49)
  • Run event:clear on optimize:clear (a61b24c2)
  • Remove unnecessary double MAC for AEAD ciphers (#38475)
  • Adds Response authorization to Form Requests (#38489)
  • Make TestResponse::getCookie public so it can be directly used in tests (#38524)

Added

  • Added stringable support for isUuid (#38330)
  • Allow for closure reflection on all MailFake assertions (#38328)
  • Added Illuminate/Support/Testing/Fakes/MailFake::assertNothingOutgoing() (363af47)
  • Added Illuminate/Support/Testing/Fakes/MailFake::assertNotOutgoing() (a3658c9)
  • Added Support withTrashed on routes (#38348)
  • Added Failover Swift Transport driver (#38344)
  • Added Conditional rules (#38361)
  • Added assertRedirectToSignedRoute() method for testing responses (#38349)
  • Added Validated subsets (#38366)
  • Share handler instead of client between requests in pool to ensure ResponseReceived events are dispatched in async HTTP Request (#38380)
  • Support union types on event discovery (#38383)
  • Added Assert invalid in testResponse (#38384)
  • Add qualifyColumns method to Model class (#38403)
  • Added ability to throw a custom validation exception (#38406)
  • Support shorter subscription syntax (#38408)

Fixed

  • Handle exceptions in batch callbacks (#38327)
  • Bump AWS PHP SDK (#38297)
  • Fixed firstOrCreate and firstOrNew should merge attributes correctly (#38346)
  • Check for incomplete class to prevent unexpected error when class cannot be loaded in retry command (#38379)

Changed

  • Update the ParallelRunner to allow for a custom Runner to be resolved (#38374)
  • Use Fluent instead of array on Rule::when() (#38397)

Added

  • Added support for GCM encryption (#38190, 827bc1d)
  • Added exception as parameter to the missing() callbacks in Illuminate/Routing/Middleware/SubstituteBindings.php (#38289)
  • Implement TrustProxies middleware (#38295)
  • Added bitwise not operator to Illuminate/Database/Query/Builder.php (#38316)
  • Adds attempt method to RateLimiter (#38313)
  • Added withoutTrashed on Exists rule (#38314)

Changed

  • Wraps column name inside subQuery of hasOneOfMany-relationship (#38263)
  • Change Visibility of the Markdown property in Mailable (#38320)
  • Swap multiple logical OR for in_array when checking date casting (#38307)

Fixed

  • Fixed out of bounds shift and pop behavior in Collection (bd89575)
  • Fixed schedule timezone when using CarbonImmutable (#38297)
  • Fixed isDateCastable for the new immutable_date and immutable_datetime casts (#38294)
  • Fixed Factory hasMany method (#38319)

Added

  • Added placeholders replace for accepted_if validation message (#38240)

Fixed

  • Use type hints in cast.stub to match interface (#38234)
  • Some PHP 8.1 fixes (#38245)
  • Fixed aliasing with cursor pagination (#38251)
  • Fixed signed routes (#38249)

Added

  • Added cache_locks table to cache stub (#38152)
  • Added queue:monitor command (#38168)
  • Added twiceDailyAt schedule frequency (#38174)
  • Added immutable date and datetime casting (#38199)
  • Allow the php web server to run multiple workers (#38208)
  • Added accepted_if validation rule (#38210)

Fixed

  • Fixed signed routes with expires parameter (#38111, 732c0e0)
  • Remove call to deleted method in Illuminate/Testing/TestResponse::statusMessageWithException() (cde3662)
  • Fixed previous column for cursor pagination (#38203)

Changed

  • Prevent assertStatus() invalid JSON exception for valid JSON response content (#38192)
  • Bump AWS SDK to ^3.186.4 (#38216)
  • Implement ReturnTypeWillChange for some place (#38221, #38212, #38226)
  • Use actual countable interface on MessageBag (#38227)

Refactoring

  • Remove hardcoded Carbon reference from scheduler event (#38063)

Added

  • Allow shift() and pop() to take multiple items from a collection (#38093)
  • Added hook to configure broadcastable model event (5ca5768, aca6f90)
  • Support a proxy URL for mix hot (#38118)
  • Added Illuminate/Validation/Rules/Unique::withoutTrashed() (#38124)
  • Support job middleware on queued listeners (#38128)
  • Model Broadcasting - Adding broadcastWith() and broadcastAs() support (#38137)
  • Allow parallel testing without database creation (#38143)

Fixed

  • Fixed display of validation errors occurred when asserting status (#38088)
  • Developer friendly message if no Prunable Models found (#38108)
  • Fix running schedule:test on CallbackEvent (#38146)

Changed

  • BelongsToMany->sync() will support touching for pivots when the result contains detached items (#38085)
  • Ability to specify the broadcaster to use when broadcasting an event (#38086)
  • Password Validator should inherit custom error message and attribute (#38114)

Added

  • Allow dynamically customizing connection for queued event listener (#38005, ebc3ce4)
  • Added @class Blade directive (#38016)
  • Accept closure for retry() sleep (#38035)
  • The controller can directly return the stdClass object (#38033)
  • Make FilesystemAdapter macroable (#38030)
  • Track exceptions and display them on failed status checks for dx (#38025)
  • Display unexpected validation errors when asserting status (#38046)
  • Ability to return the default value of a request whenHas and whenFilled methods (#38060)
  • Added Filesystem::replaceInFile() method (#38069)

Fixed

  • Fixed passing cursor to pagination methods (#37996)
  • Fixed issue with cursor pagination and Json resources (#38026)
  • ErrorException: Undefined array key "exception" (#38059)
  • Fixed unvalidated array keys without implicit attributes (#38052)

Changed

  • Passthrough excluded uri's in maintenance mode (#38041)
  • Allow for named arguments via dispatchable trait (#38066)

Added

  • Added ability to cancel notifications immediately prior to sending (#37930)
  • Added the possibility of having "Prunable" models (#37889)
  • Added support for both CommonMark 1.x and 2.x (#37954)
  • Added Illuminate/Validation/Factory::excludeUnvalidatedArrayKeys() (#37943)

Fixed

  • Fixed Illuminate/Bus/PendingBatch::add() (108385b)
  • Cursor pagination fixes (#37915)

Changed

  • Mixed orders in cursor paginate (#37762)
  • Clear config after dumping auto-loaded files (#37985)

Added

  • Adds ResponseReceived events to async requests of HTTP Client (#37917)

Fixed

  • Fixed edge case causing a BadMethodCallExceptions to be thrown when using loadMissing() (#37871)

Reverted

Fixed

  • Fixed undefined array key in SqlServerGrammar when using orderByRaw (#37859)
  • Fixed facade isMock to recognise LegacyMockInterface (#37882)

Changed

  • Reset the log context after each worker loop (#37865)
  • Improve pretend run Doctrine failure message (#37879)

Added

  • Add context to subsequent logs (#37847)

Added

  • Added parameter casting for cursor paginated items (#37785, 31ebfc8)
  • Added Illuminate/Http/ResponseTrait::statusText() (#37795)
  • Track a loop variable for sequence and pass it with count to closure (#37799)
  • Added "precedence" order to route:list command (#37824)

Fixed

  • Remove ksort in pool results that modifies intended original order (#37775)
  • Make sure availableIn returns positive values in /Illuminate/Cache/RateLimiter::availableIn() (#37809)-
  • Ensure alias is rebound when mocking items in the container in tests (#37810)
  • Move primary after collate in /MySqlGrammar.php modifiers (#37815))

Fixed

  • Order of Modifiers Amended in MySqlGrammar (#37782)

Added

  • Added a queue:prune-failed command (#37696, 7aca658)
  • Added Illuminate/Filesystem/FilesystemManager::build() (#37720, c21fc12)
  • Allow customising the event.stub file (#37761)
  • Added Illuminate/Collections/Collection::sliding() and Illuminate/Collections/LazyCollection::sliding() (#37751)
  • Make Illuminate\Http\Client\Request macroable (#37744)
  • Added GIF, WEBP, WBMP, BMP support to FileFactory::image() (#37743)
  • Dispatch 'connection failed' event in http client (#37740)

Fixed

  • Adds a small fix for unicode with blade echo handlers (#37697)
  • Solve the Primary Key issue in databases with sql_require_primary_key enabled (#37715)

Changed

  • Removed unnecessary checks in RequiredIf validation, fixed tests (#37700)
  • Replace non ASCII apostrophe in the email notification template (#37709)
  • Change the order of the bindings for a Sql Server query with a offset and a subquery order by (#37728, 401928b)
  • Bind mock instances as singletons so they are not overwritten (#37746)
  • Encode objects when casting as JSON (#37759)
  • Call on_stats handler in Http stub callbacks (#37738)

Added

  • Introduce scoped instances (#37521, 2971b64)
  • Added whereContains AssertableJson method (#37631, 2d2d108)
  • Added Illuminate/Database/Connection::setRecordModificationState() (ee1e6b4)
  • Added match() and matchAll() methods to Illuminate/Support/Str.php (#37642)
  • Copy password rule to current_password (#37650)
  • Allow tap() on Paginator (#37682)

Revert

Fixed

  • Remove illuminate/foundation dependency from Password validation (#37648)
  • Fixed callable password defaults in validator (0b1610f)
  • Fixed dns_get_record loose check of A records for active_url rule (#37675)
  • Type hinted arguments for Illuminate\Validation\Rules\RequiredIf (#37688)
  • Fixed when passed object as parameters to scopes method (#37692)

Added

  • Allow Custom Notification Stubs (#37584)
  • Added methods for indicating the write connection should be used (94dbf76)
  • Added timestamp reference to schedule:run artisan command output (#37591)
  • Columns in the order by list must be unique (#37582)

Changed

  • Fire a trashed model event and listen to it for broadcasting events (#37618)
  • Cast JSON strings containing single quotes (#37619)

Fixed

  • Fixed for cloning issues with PendingRequest object (#37596, 96518b9)
  • Makes the retrieval of Http client transferStats safe (#37597)
  • Fixed inconsistency in table names in validator (#37606)
  • Fixes for Stringable for views (#37613)
  • Fixed one-of-many bindings (#37616)
  • Fixed infinity loop on transaction committed (#37626)
  • Added missing fix to DatabaseRule::resolveTableName fix #37580 (#37621)

Revert

Added

  • Introduce Conditional trait (#37504, 45ff23c, #37561)
  • Allow multiple SES configuration with IAM Role authentication (#37523)
  • Adds class handling for Blade echo statements (#37478)
  • Added Illuminate/Session/DatabaseSessionHandler::setContainer() (7a71c29)
  • Allow connecting to read or write connections with the db command (#37548)
  • Added assertDownloadOffered test method to TestResponse class (#37532)
  • Added Illuminate/Http/Client/Response::close() (#37566)
  • Allow setting middleware on queued Mailables (#37568)
  • Adds new RequestSent and ResponseReceived events to the HTTP Client (#37572)

Changed

  • Rename protected method Illuminate/Foundation/Console/StorageLinkCommand::removableSymlink() to Illuminate/Foundation/Console/StorageLinkCommand::isRemovableSymlink() (#37508)
  • Correct minimum Predis version to 1.1.2 (#37554)
  • Columns in the order by list must be unique (#37550)
  • More Convenient Model Broadcasting (#37491)

Fixed

  • Get queueable relationship when collection has non-numeric keys (#37556)

Added

  • Delegate lazy loading violation to method (#37480)
  • Added force option to Illuminate/Foundation/Console/StorageLinkCommand (#37501, 3e547d2)

Fixed

  • Fixed aggregates with having (#37487, c986e12)
  • Bugfix passing errorlevel when command is run in background (#37479)

Changed

  • Init the traits when the model is being unserialized (#37492)
  • Relax the lazy loading restrictions (#37503)

Added

  • Added Illuminate\Auth\Authenticatable::getAuthIdentifierForBroadcasting() (#37408)
  • Added eloquent strict loading mode (#37363)
  • Added default timeout to NotPwnedVerifier validator (#37440, 45567e0)
  • Added beforeQuery to base query builder (#37431)
  • Added Illuminate\Queue\Jobs\Job::shouldFailOnTimeout() (#37450)
  • Added ValidatorAwareRule interface (#37442)
  • Added model support for database assertions (#37459)

Fixed

  • Fixed eager loading one-of-many relationships with multiple aggregates (#37436)

Changed

  • Improve signed url signature verification (#37432)
  • Improve one-of-many performance (#37451)
  • Update Illuminate/Pagination/Cursor::parameter() (#37458)
  • Reconnect the correct connection when using ::read or ::write (#37471, d1a32f9)

Added

  • Add default "_of_many" to join alias when relation name is table name (#37411)

Changed

  • Allow dababase password to be null in MySqlSchemaState (#37418)
  • Accept any instance of Rule and not just Password in password rule (#37407)

Fixed

  • Fixed aggregates (e.g.: withExists) for one of many relationships (#37413, 498e1a0)

Added

  • Support views in SQLServerGrammar (#37348)
  • Added new assertDispatchedSync methods to BusFake (#37350, 414f382)
  • Added withExists method to QueriesRelationships (#37302)
  • Added ability to define default Password Rule (#37387, f7e5b1c)
  • Allow sending a refresh header with maintenance mode response (#37385)
  • Added loadExists on Model and Eloquent Collection (#37388)
  • Added one-of-many relationship (inner join) (#37362)

Changed

  • Avoid deprecated guzzle code (#37349)
  • Make AssertableJson easier to extend by replacing self with static (#37380)
  • Raise ScheduledBackgroundTaskFinished event to signal when a run in background task finishes (#37377)

Added

  • Added Illuminate\Database\Eloquent\Model::updateQuietly() (#37169)
  • Added Illuminate\Support\Str::replace() (#37186)
  • Added Model key extraction to id on whereKey() and whereKeyNot() (#37184)
  • Added support for Pusher 6.x (#37223, 819db15)
  • Added Illuminate/Foundation/Http/Kernel::getMiddlewarePriority() (#37271)
  • Added cursor pagination (aka keyset pagination) (#37216, #37315)
  • Support mass assignment to SQL Server views (#37307)
  • Added Illuminate/Support/Stringable::unless() (#37326)

Fixed

  • Fixed Illuminate\Database\Query\Builder::offset() with non numbers $value (#37164)
  • Treat missing UUID in failed Queue Job as empty string (failed driver = database) (#37251)
  • Fixed fields not required with required_unless (#37262)
  • SqlServer Grammar: Bugfixes for hasTable and dropIfExists / support for using schema names in these functions (#37280)
  • Fix PostgreSQL dump and load for Windows (#37320)

Changed

  • Add fallback when migration is not anonymous class (#37166)
  • Ably expects clientId as string in Illuminate\Broadcasting\Broadcasters\AblyBroadcaster::validAuthenticationResponse() (#37249)
  • Computing controller middleware before getting excluding middleware (#37259)
  • Update mime extension check (#37332)
  • Added exception to chunkById() when last id cannot be determined (#37294)

Added

  • Added Illuminate\Database\Eloquent\Builder::withOnly() (#37144)
  • Added Illuminate\Bus\PendingBatch::add() (#37151)

Fixed

  • Fixed Cache store with a name other than 'dynamodb' (#37145)

Changed

  • Added has environment variable to startProcess method in ServeCommand (#37142)
  • Some cast to int in Illuminate\Database\Query\Grammars\SqlServerGrammar (09bf145)

Added

  • Added Illuminate\Collections\Collection::sole() method (#37034)
  • Support url for php artisan db command (#37064)
  • Added Illuminate\Foundation\Bus\DispatchesJobs::dispatchSync() (#37063)
  • Added Illuminate\Cookie\CookieJar::expire() (#37072, fa3a14f)
  • Added Illuminate\Database\DatabaseManager::setApplication() (#37068)
  • Added Illuminate\Support\Stringable::whenNotEmpty() (#37080)
  • Added Illuminate\Auth\SessionGuard::attemptWhen() (#37090, e3fcd97)
  • Added password validation rule (#36960)

Fixed

  • Fixed JsonResponse::fromJsonString() double encoding string (#37076)
  • Fallback to primary key if owner key doesnt exist on model at all in MorphTo relation (a011109)
  • Fixes for PHP 8.1 (#37087, #37101)
  • Do not execute beforeSending callbacks twice in HTTP client (#37116)
  • Fixed nullable values for required_if (#37128, 86fd558)

Changed

  • Schedule list timezone command (#37117)

Added

  • Added a wordCount() string helper (#36990)
  • Allow anonymous and class based migration coexisting (#37006)
  • Added Illuminate\Broadcasting\Broadcasters\PusherBroadcaster::setPusher() (#37033)

Fixed

  • Fixed required_if boolean validation (#36969)
  • Correctly merge object payload data in Illuminate\Queue\Queue::createObjectPayload() (#36998)
  • Allow the use of temporary views for Blade testing on Windows machines (#37044)
  • Fixed Http::withBody() not being sent (#37057)

Added

  • Allow to retry jobs by queue name (#36898, f2d9b59, c351a30)
  • Added strings to the DetectsLostConnections.php (4210258)
  • Allow testing of Blade components that return closures (#36919)
  • Added anonymous migrations (#36906)
  • Added Session\Store::missing() method (#36937)
  • Handle concurrent asynchronous requests in the HTTP client (#36948, 245a712)
  • Added tinyText data type to Blueprint and to available database grammars (#36949)
  • Added a method to remove a resolved view engine (#36955)
  • Added Illuminate\Database\Eloquent\Model::getAttributesForInsert() protected method (9a9f59f, 314bf87)

Fixed

  • Fixed clone() on EloquentBuilder (#36924)

Changed

  • Model::delete() throw LogicException not Exception (#36914)
  • Make pagination linkCollection() method public (#36959)

Revert

  • Revert blade changes (#36902)

Fixed

  • Fixed escaping within quoted strings in blade (#36893)

Changed

  • Call transaction callbacks after updating the transaction level (#36890, #36892)
  • Support maxExceptions option on queued listeners (#36891)

Revert

Added

  • Added support useCurrentOnUpdate for MySQL datetime column types (#36817)
  • Added dispatch_sync() helper (#36835)
  • Allowing skipping TransformRequests middlewares via Closure (#36856)
  • Added type option to make controller command (#36853)
  • Added missing return $this to Illuminate\Support\Manager::forgetDrivers() (#36859)
  • Added unfinished option to PruneBatchesCommand (#36877)
  • Added a simple Str::repeat() helper function (#36887)

Fixed

  • Fixed getMultiple and increment / decrement on tagged cache (0d21194)
  • Implement proper return types in cache increment and decrement (#36836)
  • Fixed blade compiler regex issue (#36843, #36848)
  • Added missing temporary_url when creating flysystem (#36860)
  • Fixed PostgreSQL schema:dump when read/write hosts are arrays (#36881)

Changed

  • Improve the exception thrown when JSON encoding response contents fails in Response::setContent() (#36851, #36868)
  • Revert isDownForMaintenance function to use file_exists() (#36889)

Fixed

  • Fixed setting DynamoDB credentials (#36822)

Added

  • Added support of DynamoDB in CI suite (#36749)
  • Support username parameter for predis (#36762)
  • Added missing months() to Wormhole (#36808)

Deprecated

  • Deprecate MocksApplicationServices trait (#36716)

Fixed

  • Fixes missing lazy() and lazyById() on BelongsToMany and HasManyThrough relation query builder (#36758)
  • Ensure the compiled view directory exists (#36772)
  • Fix Artisan test method PendingCommand::doesntExpectOutput() always causing a failed test (#36806)
  • FIXED: The use of whereHasMorph in a whereHas callback generates a wrong sql statements (#36801)

Changed

  • Allow lazy collection to be instantiated from a generator (#36738)
  • Use qualified column names in pivot query (#36720)
  • Octane Prep (#36777)

Refactoring

  • Remove useless loop in Str::remove() (#36722)

Inspiring

  • Added more inspiring quotes (92b7bde)

Added

  • Added WSREP communication link failure for lost connection detection (#36668)
  • Added "except-path" option to route:list command (#36619, 76e11ee)
  • Added Illuminate\Support\Str::remove() and Illuminate\Support\Stringable::remove() methods (#36639, 7b0259f, 20e2470)
  • Added Illuminate\Database\Eloquent\Relations\MorphPivot::getMorphType() (#36640, 7e08215)
  • Added assertion to verify type of key in JSON (#36638)
  • Added prohibited validation rule (#36667)
  • Added strict comparison to distinct validation rule (#36669)
  • Added Illuminate\Translation\FileLoader::getJsonPaths() (#36689)
  • Added Illuminate\Support\Testing\Fakes\EventFake::assertAttached() (#36690)
  • Added lazy() and lazyById() methods to Illuminate\Database\Concerns\BuildsQueries (#36699)

Fixed

  • Fixes the issue using cache:clear with PhpRedis and a clustered Redis instance. (#36665)
  • Fix replacing required :input with null on PHP 8.1 in Illuminate\Validation\Concerns\FormatsMessages::getDisplayableValue() (#36622)
  • Fixed artisan schema:dump error (#36698)

Changed

  • Adjust Fluent Assertions (#36620)
  • Added timestamp reference to schedule:work artisan command output (#36621)
  • Expect custom markdown mailable themes to be in mail subdirectory (#36673)
  • Throw exception when unable to create LockableFile (#36674)

Refactoring

  • Always prefer typesafe string comparisons (#36657)

Added

  • Added Illuminate\Database\Connection::forgetRecordModificationState() (#36617)

Reverted

  • Reverted "Container - detect circular dependencies" (332844e)

Added

  • Added broken pipe exception as lost connection error (#36601)
  • Added missing option to resource (#36562)
  • Introduce StringEncrypter interface (#36578)

Fixed

  • Fixed returns with Mail & Notification components (#36559)
  • Stack driver fix: respect the defined processors in LogManager (#36591)
  • Require the correct password to rehash it when logging out other devices (#36608, 1e61612)

Changed

  • Allow nullable columns for AsArrayObject/AsCollection casts (#36526)
  • Accept callable class for reportable and renderable in exception handler (#36551)
  • Container - detect circular dependencies (dd7274d, a712f72, 6f9bb4c)
  • Initialize CronExpression class using new keyword (#36600)
  • Use different config key for overriding temporary url host in AwsTemporaryUrl method (#36612)

Changed

  • Changed Illuminate\Queue\Middleware\ThrottlesExceptions (b8a70e9)

Added

  • Phpredis lock serialization and compression support (#36412, 10f1a93)
  • Added Fluent JSON Assertions (#36454)
  • Added methods to dump requests of the Laravel HTTP client (#36466)
  • Added ThrottlesExceptions and ThrottlesExceptionsWithRedis job middlewares for unstable services (#36473, 21fee76, 36518, 37e48ba)
  • Added support to Eloquent Collection on Model::destroy() (#36497)
  • Added rest option to php artisan queue:work command (#36521, c6ea49c)
  • Added prohibited_if and prohibited_unless validation rules (#36516)
  • Added class argument to Illuminate\Database\Console\Seeds\SeedCommand (#36513)

Fixed

  • Fix validator treating null as true for (required|exclude)_(if|unless) due to loose in_array() check (#36504)

Changed

  • Delete existing links that are broken in Illuminate\Foundation\Console\StorageLinkCommand (#36470)
  • Use user provided url in AwsTemporaryUrl method (#36480)
  • Allow to override discover events base path (#36515)

Added

  • Added new VendorTagPublished event (#36458)
  • Added new Stringable::test() method (#36462)

Reverted

Changed

  • Make user policy command fix (Windows) (#36464)

Reverted

Fixed

  • Fixed formatWheres() methods in DatabaseRule (#36441)

Added

  • Added new line to DetectsLostConnections (#36373)
  • Added Illuminate\Cache\RateLimiting\Limit::perMinutes() (#36352, 86d0a5c)
  • Make Database Factory macroable (#36380)
  • Added stop on first failure for Validators (39e1f84)
  • Added containsOneItem() method to Collections (#36428, 5b7ffc2)

Changed

  • Respect custom route key with explicit route model binding (#36375)
  • Add Buffered Console Output (#36404)
  • Don't flash 'current_password' input (#36415)
  • Check for context method in Exception Handler (#36424)

Added

  • Support username parameter for predis (#36299)
  • Adds "setUpTestDatabase" support to Parallel Testing (#36301)
  • Added support closures in sequences (3c66f6c)
  • Added gate evaluation event (0c6f5f7)
  • Added a collect method to the HTTP Client response (#36331)
  • Allow Blade's service injection to inject services typed using class name resolution (#36356)

Fixed

  • Fixed: Using withoutMiddleware() and a closure-based middleware on PHP8 throws an exception (#36293)
  • Fixed: The label for page number in pagination links should always be a string (#36292)
  • Clean up custom Queue payload between tests (#36295)
  • Fixed flushDb (cache:clear) for redis clusters (#36281)
  • Fixed retry command for encrypted jobs (#36334, 2fb5e44)
  • Make sure trait_uses_recursive returns an array (#36335)

Changed

  • Make use of specified ownerKey in MorphTo::associate() (#36303)
  • Update pusher deps and update broadcasting (3404185)

Fixed

  • Revert "[8.x] Clean up custom Queue payload between tests" (#36287)

Added

  • Allow users to specify configuration keys to be used for primitive binding (#36241)
  • ArrayObject + Collection Custom Casts (#36245)
  • Add view path method (af3a651)

Changed

  • Allow using dot syntax for $responseKey (#36196)
  • Full trace for http errors (#36219)

Fixed

  • Fix undefined property with sole query (#36216)
  • Resolving non-instantiables corrupts Container::$with (#36212)
  • Fix attribute nesting on anonymous components (#36240)
  • Ensure $prefix is a string (#36254)
  • Add missing import (#34569)
  • Align PHP 8.1 behavior of e() (#36262)
  • Ensure null values won't break on PHP 8.1 (#36264)
  • Handle directive $value as a string (#36260)
  • Use explicit flag as default sorting (#36261)
  • Fix middleware group display (d9e28dc)

Added

  • Conditionally merge classes into a Blade Component attribute bag (#36131)
  • Allow adding multiple columns after a column (#36145)
  • Add query builder chunkMap method (#36193, 048ac6d)

Changed

  • Update CallQueuedClosure to catch Throwable/Error (#36159)
  • Allow components to use custom attribute bag (#36186)

Fixed

  • Set process timeout to null for load mysql schema into database (#36126)
  • Don't pluralise string if string ends with none alphanumeric character (#36137)
  • Add query log methods to the DB facade (#36177)
  • Add commonmark as recommended package for Illuminate\Support (#36171)
  • Fix Eager loading partially nullable morphTo relations (#36129)
  • Make height of image working with yahoo (#36201)
  • Make sole() relationship friendly (#36200)
  • Make layout in mail responsive in Gmail app (#36198)
  • Fixes parallel testing when a database is configured using URLs (#36204)

Fixed

  • Fixed merge conflict in src/Illuminate/Foundation/Console/stubs/exception-render-report.stub (#36123)

Added

  • Allow to fillJsonAttribute with encrypted field (#36063)
  • Added Route::missing() (#36035)
  • Added Illuminate\Support\Str::markdown() and Illuminate\Support\Stringable::markdown() (#36071)
  • Support retrieving URL for Sftp adapter (#36120)

Fixed

  • Fixed issues with dumping PostgreSQL databases that contain multiple schemata (#36046)
  • Fixes job batch serialization for PostgreSQL (#36081)
  • Fixed Illuminate\View\ViewException::report() (#36110)

Changed

  • Typecast page number as integer in Illuminate\Pagination\AbstractPaginator::resolveCurrentPage() (#36055)
  • Changed Illuminate\Testing\ParallelRunner::createApplication() (1c11b78)

Added

  • Added Stringable::pipe & make Stringable tappable (#36017)
  • Accept a command in object form in Bus::assertChained (#36031)
  • Adds parallel testing (#36034)
  • Make Listeners, Mailables, and Notifications accept ShouldBeEncrypted (#36036)
  • Support JSON encoding Stringable (#36012)
  • Support for escaping bound attributes (#36042)
  • Added Illuminate\Foundation\Application::useLangPath() (#36044)

Changed

  • Pipe through new render and report exception methods (#36032)

Fixed

  • Fixed issue with dumping schema from a postgres database using no default schema (#35966, 7be50a5)
  • Fixed worker --delay option (#35991)
  • Added support of PHP 7.3 to RateLimiter middleware(queue) serialization (#35986)
  • Fixed Illuminate\Foundation\Http\Middleware\TransformsRequest::cleanArray() (#36002)
  • ModelNotFoundException: ensure that the model class name is properly set (#36011)
  • Fixed bus fake (e720279)

Added

Fixed

  • Fixed type error in Illuminate\Http\Concerns\InteractsWithContentTypes::isJson() (#35956)
  • Fixed Illuminate\Collections\Collection::sortByMany() (#35950)
  • Fixed Limit expected bindings (#35972, 006873d)
  • Fixed serialization of rate limited with redis middleware (#35971)

Fixed

  • Fixed empty html mail (#35941)

Added

  • Added Illuminate\Database\Concerns\BuildsQueries::sole() (#35869, 29c7dae, #35908, #35902, #35912)
  • Added default parameter to throw_if / throw_unless (#35890)
  • Added validation support for TeamSpeak3 URI scheme (#35933)

Fixed

  • Fixed extra space on blade class components that are inline (#35874)
  • Fixed serialization of rate limited middleware (f3d4dcb, #35916)

Changed

  • Allow a specific seeder to be used in tests in Illuminate\Foundation\Testing\RefreshDatabase::migrateFreshUsing() (#35864)
  • Pass $key to closure in Collection and LazyCollection's reduce method as well (#35878)

Fixed

  • Limit expected bindings (#35865)

Added

  • Added new lines to DetectsLostConnections (#35752, #35790)
  • Added Illuminate\Support\Testing\Fakes\EventFake::assertNothingDispatched() (#35835)
  • Added reduce with keys to collections and lazy collections (#35839)

Fixed

  • Fixed error from missing null check on PHP 8 in Illuminate\Validation\Concerns\ValidatesAttributes::validateJson() (#35797)
  • Fix bug with RetryCommand (4415b94, #35828)
  • Fixed Illuminate\Testing\PendingCommand::expectsTable() (#35820)
  • Fixed morphTo() attempting to map an empty string morph type to an instance (#35824)

Changes

  • Update Illuminate\Http\Resources\CollectsResources::collects() (1fa20dd)
  • "null" constraint prevents aliasing SQLite ROWID (#35792)
  • Allow strings to be passed to the report function (#35803)

Added

  • Added command to clean batches table (#35694, 33f5ac6)
  • Added item to list of causedByLostConnection errors (#35744)
  • Make it possible to set Postmark Message Stream ID (#35755)

Fixed

  • Fixed php artisan db command for the Postgres CLI (#35725)
  • Fixed OPTIONS method bug with use same path and diff domain when cache route (#35714)

Changed

  • Ensure DBAL custom type doesn't exists in Illuminate\Database\DatabaseServiceProvider::registerDoctrineTypes() (#35704)
  • Added missing dispatchAfterCommit to DatabaseQueue (#35715)
  • Set chain queue when inside a batch (#35746)
  • Give a more meaningul message when route parameters are missing (#35706)
  • Added table prefix to Illuminate\Database\Console\DumpCommand::schemaState() (4ffe40f)
  • Refresh the retryUntil time on job retry (#35780, 45eb7a7)

Revert

Added

  • Added Illuminate\Database\DBAL\TimestampType (a5761d4, cff3705 382445f, 810047e)
  • Added ability to specify a separate lock connection (#35621, 3d95235)
  • Added Illuminate\Database\Eloquent\Relations\Concerns\InteractsWithPivotTable::syncWithPivotValues() (#35644, 49b3ce0)

Fixed

  • Fixed Illuminate\Validation\Concerns\ValidatesAttributes::validateJson() for PHP8 (#35646)
  • Fixed assertCookieExpired() and assertCookieNotExpired() methods in Illuminate\Testing\TestResponse (#35637)
  • Fixed: Account for a numerical array of views in Mailable::renderForAssertions() (#35662)
  • Catch DecryptException with invalid X-XSRF-TOKEN in Illuminate\Foundation\Http\Middleware\VerifyCsrfToken (#35671)

Changed

  • Check configuration in Illuminate\Foundation\Console\Kernel::scheduleCache() (a253d0e)
  • Modify Model::mergeCasts to return $this (#35683)
  • Clear a cached user in RequestGuard if a request is changed (#35692)

Added

Fixed

  • Handle Throwable exceptions on Illuminate\Redis\Limiters\ConcurrencyLimiter::block() (#35546)
  • Fixed PDO passing in SqlServerDriver (#35564)
  • When following redirects, terminate each test request in proper order (#35604)

Fixed

  • Bumped minimum Symfony version (#35535)
  • Fixed passing model instances to factories (#35541)

Added

  • Added Illuminate\Http\Client\Factory::assertSentInOrder() (#35525, d257ce2, 2fd1411)
  • Added Illuminate\Http\Client\Response::handlerStats() (#35520)
  • Added support for attaching existing model instances in factories (#35494)
  • Added assertChained() and assertDispatchedWithoutChain() methods to Illuminate\Support\Testing\Fakes\BusFake class (#35523, f1b8cac, 236c67d)
  • Allow testing of html and plain text bodies right off mailables (afb858a, b7391e4)

Fixed

  • Fixed Application flush method (#35482)
  • Fixed mime validation for jpeg files (#35518)

Revert

Added

  • Added Illuminate\Database\Eloquent\Relations\BelongsToMany::orderByPivot() (#35455, 6f83a50)

Fixed

  • Fixed an issue with the database queue driver (#35449)

Added

Fixed

  • Fix issue with polymorphic morphMaps with literal 0 (#35364)
  • Fixed Self-Relation issue in withAggregate method (#35392, aec5cca, #35394)
  • Fixed Use PHP_EOL instead of \n in PendingCommand (#35409)
  • Fixed validating image/jpeg images after Symfony/Mime update (#35419)
  • Fixed fail to morph with custom casting to objects (#35420)
  • Fixed Illuminate\Collections\Collection::sortBy() (307f6fb)
  • Don't overwrite minute and hour when specifying a time with twiceMonthly() (#35436)

Changed

  • Make DownCommand retryAfter available to prerendered view (#35357, b1ee97e)
  • Set default value on cloud driver (0bb7fe4)
  • Update Tailwind pagination focus styles (#35365)
  • Redis: allow to pass connection name (#35402)
  • Change Wormhole to use the Date Factory (#35421)

Fixed

  • Fixed reflection exception in Illuminate\Routing\Router::gatherRouteMiddleware() (c6e8357)

Added

  • Added Illuminate\Console\Concerns\InteractsWithIO::withProgressBar() (4e52a60, 169fd2b)
  • Added Illuminate\Console\Concerns\CallsCommands::callSilently() as alias for callSilent() (7f3101b, 0294433)
  • Added option to release unique job locks before processing (#35255, b53f13e)
  • Added ably broadcaster (e0f3f8e, 6381aa9)
  • Added ability to define table name as default morph type (#35257)
  • Allow overriding the MySQL server version for database queue driver (#35263)
  • Added Illuminate\Foundation\Testing\Wormhole::back() (#35261)
  • Support delaying notifications per channel (#35273)
  • Allow sorting on multiple criteria (#35277, 53eb307)
  • Added Illuminate/Database/Console/DbCommand.php command (#35304, b559b3e)
  • Added Collections splitIn methods (#35295)

Fixed

  • Fixed rendering of notifications with config custom theme (325a335)
  • Fixing BroadcastException message in PusherBroadcaster@broadcast (#35290)
  • Fixed generic DetectsLostConnection string (#35323)
  • Fixed SQL Server command generation (#35317)
  • Fixed route model binding on cached closure routes (eb3e262)

Changed

  • Disable CSRF on broadcast route (acb4b77)
  • Easily set a null cache driver (#35262)
  • Updated aws/aws-sdk-php suggest to ^3.155 (#35267)
  • Ensure ShouldBeUniqueUntilProcessing job lock is released once (#35270)
  • Rename qualifyColumn to qualifyPivotColumn in BelongsToMany & MorphToMany (#35276)
  • Check if AsPivot trait is used instead of Pivot Model in Illuminate\Database\Eloquent\Relations\BelongsToMany (#35271)
  • Avoid no-op database query in Model::destroy() with empty ids (#35294)
  • Use --no-owner and --no-acl with pg_restore (#35309)

Added

  • Added lock support for file and null cache drivers (#35139, a345185)
  • Added a doesntExpectOutput method for console command testing (#35160, c90fc5f)
  • Added support of MorphTo relationship eager loading constraints (#35190)
  • Added Illuminate\Http\ResponseTrait::withoutCookie() (e9483c4)
  • Use dynamic app namespace in Eloquent Factory instead of App\ string (#35204, 4885bd2)
  • Added read / unread scopes to database notifications (#35215)
  • Added classBasename() method to Stringable (#35219)
  • Added before resolving callbacks to container (#35228)
  • Adds the possibility of testing file upload content (#35231)
  • Added lost connection messages for MySQL persistent connections (#35224)
  • Added Support DBAL v3.0 (#35236)

Fixed

  • Update MySqlSchemaState.php to support MariaDB dump (#35184)
  • Fixed pivot and morphpivot fresh and refresh methods (#35193)
  • Fixed pivot restoration (#35218)

Changed

  • Updated EmailVerificationRequest.php to check if user is not already verified (#35174)
  • Make Validator::parseNamedParameters() public (#35183)
  • Ignore max attempts if retryUntil is set in queue:work (#35214)
  • Explode string channels on Illuminate/Log/LogManager::createStackDriver() (e5b86f2)

Added

  • Added ability to dispatch unique jobs (#35042, 2123e60)
  • Added Model::encryptUsing() (#35080)
  • Added support to MySQL dump and import using socket (#35083, c43054b)
  • Allow custom broadcastWith in notification broadcast channel (#35142)
  • Added Illuminate\Routing\CreatesRegularExpressionRouteConstraints::whereAlphaNumeric() (#35154)

Fixed

  • Fixed typo in make:seeder command name inside ModelMakeCommand (#35107)
  • Fix SQL Server grammar for upsert (missing semicolon) (#35112)
  • Respect migration table name in config when dumping schema (110eb15)
  • Respect theme when previewing notification (ed4411d)
  • Fix appendable attributes in Blade components (#35131)
  • Remove decrypting array cookies from cookie decrypting (#35130)
  • Turn the eloquent collection into a base collection if mapWithKeys loses models (#35129)

Changed

  • Move dispatching of DatabaseRefreshed event to fire before seeders are run (#35091)
  • Handle returning false from reportable callback (55f0b5e)
  • Update Illuminate\Database\Schema\Grammars\MySqlGrammar::typeTimestamp() (#35143)
  • Remove expectedTables after converting to expectedOutput in PendingCommand (#35163)
  • Change SQLite schema command environment variables to work on Windows (#35164)

Added

  • Added loadMax() | loadMin() | loadSum() | loadAvg() methods to Illuminate\Database\Eloquent\Collection. Added loadMax() | loadMin() | loadSum() | loadAvg() | loadMorphMax() | loadMorphMin() | loadMorphSum() | loadMorphAvg() methods to Illuminate\Database\Eloquent\Model (#35029)
  • Modify Illuminate\Database\Eloquent\Concerns\QueriesRelationships::has() method to support MorphTo relations (#35050)
  • Added Illuminate\Support\Stringable::chunk() (#35038)

Fixed

  • Fixed a few issues in Illuminate\Database\Eloquent\Concerns\QueriesRelationships::withAggregate() (#35061, #35063)

Changed

  • Set chain queue | connection | delay only when explicitly configured in (#35047)

Refactoring

  • Remove redundant unreachable return statements in some places (#35053)

Fixed

  • Fixed Illuminate\Database\Eloquent\Concerns\QueriesRelationships::withAggregate() (20b0c6e)

Fixed

Fixed

  • Fixed alias usage in Eloquent (6091048)
  • Fixed Illuminate\Support\Reflector::isCallable() (a90f344)

Added

  • Added ability to create observers with custom path via make:observer command (#34911)
  • Added Illuminate\Database\Eloquent\Factories\Factory::lazy() (#34923)
  • Added ability to make cast with custom stub file via make:cast command (#34930)
  • ADDED: Custom casts can implement increment/decrement logic (#34964)
  • Added encrypted Eloquent cast (#34937, #34948)
  • Added DatabaseRefreshed event to be emitted after database refreshed (#34952, f31bfe2)
  • Added withMax()|withMin()|withSum()|withAvg() methods to Illuminate/Database/Eloquent/Concerns/QueriesRelationships (#34965, f4e4d95, #35004)
  • Added explain() to Query\Builder and Eloquent\Builder (#34969)
  • Make multiple_of validation rule handle non-integer values (#34971)
  • Added setKeysForSelectQuery method and use it when refreshing model data in Models (#34974)
  • Full PHP 8.0 Support (#33388)
  • Added Illuminate\Support\Reflector::isCallable() (#34994, 8c16891, 31917ab, 11cfa4d, #34999)
  • Added route regex registration methods (#34997, 3d405cc, c2df0d5)
  • Added dontRelease option to RateLimited and RateLimitedWithRedis job middleware (#35010)

Fixed

  • Fixed check of file path in Illuminate\Database\Schema\PostgresSchemaState::load() (268237f)
  • Fixed: PhpRedis (v5.3.2) cluster - set default connection context to null (#34935)
  • Fixed Eloquent Model loadMorph and loadMorphCount methods (#34972)
  • Fixed ambigious column on many to many with select load (5007986)
  • Fixed Postgres Dump (#35018)

Changed

  • Changed make:factory command (#34947, 4f38176)
  • Make assertSee, assertSeeText, assertDontSee and assertDontSeeText accept an array (#34982, 2b98bcc)

Revert

Fixed

Added

  • Added job middleware to prevent overlapping jobs (#34794, eed05b4)
  • Bring Rate Limiters to Jobs (#34829, ae00294)
  • Added multiple_of custom replacer in validator (#34858)
  • Preserve eloquent collection type after calling ->fresh() (#34848)
  • Provisional support for PHP 8.0 for 6.x (Changed some code in 8.x) (#34884, 28bb76e)

Fixed

  • Fixed fresh() and refresh() on pivots and morph pivots (#34836)
  • Fixed config batching typo (#34852)
  • Fixed Illuminate\Queue\Console\RetryBatchCommand for un-found batch id (#34878)

Changed

  • Change loadRoutesFrom() to accept group $attributes (#34866)

Added

  • Allow for chains to be added to batches (#34612, 7b4a9ec)
  • Added is() method to 1-1 relations for model comparison (#34693, 7ba2577)
  • Added upsert() to Eloquent and Base Query Builders (#34698, #34712, 58a0e1b)
  • Support psql and pg_restore commands in schema load (#34711)
  • Added Illuminate\Database\Schema\Builder::dropColumns() method on the schema class (#34720)
  • Added yearlyOn() method to scheduler (#34728)
  • Added restrictOnDelete() method to ForeignKeyDefinition class (#34752)
  • Added newLine() method to InteractsWithIO trait (#34754)
  • Added isNotEmpty() method to HtmlString (#34774)
  • Added delay() to PendingChain (#34789)
  • Added "multiple_of" validation rule (#34788)
  • Added custom methods proxy support for jobs dispatch() (#34781)
  • Added QueryBuilder::clone() (#34780)
  • Support bus chain on fake (a952ac24)
  • Added missing force flag to queue:clear command (#34809)
  • Added dropConstrainedForeignId() to `Blueprint (#34806)
  • Implement supportsTags() on the Cache Repository (#34820)
  • Added canAny to user model (#34815)
  • Added when() and unless() methods to MailMessage (#34814)

Fixed

  • Fixed collection wrapping in BelongsToManyRelationship (9245807)
  • Fixed LengthAwarePaginator translations issue (#34714)

Changed

  • Improve schedule:work command (#34736, bbddba2)
  • Guard against invalid guard in make:policy (#34792)
  • Fixed router inconsistency for namespaced route groups (#34793)

Added

  • Added support times() with raw() from Illuminate\Database\Eloquent\Factories\Factory (#34667)
  • Added Illuminate\Pagination\AbstractPaginator::through() (#34657)
  • Added extendsFirst() method similar to includesFirst() to view (#34648)
  • Allowed Illuminate\Http\Client\PendingRequest::attach() method to accept many files (#34697, 1bb7ad6)
  • Allowed serializing custom casts when converting a model to an array (#34702)

Fixed

  • Added missed RESET_THROTTLED constant to Password Facade (#34641)
  • Fixed queue clearing when blocking (#34659)
  • Fixed missing import in TestView.php (#34677)
  • Use getRealPath to ensure console command class names are generated correctly in Illuminate\Foundation\Console\Kernel (#34653)
  • Added pg_dump --no-owner and --no-acl to avoid owner/permission issues in Illuminate\Database\Schema\PostgresSchemaState::baseDumpCommand() (#34689)
  • Fixed queue:failed command when Class not exists (#34696)

Performance

  • Increase performance of Str::before() by over 60% (#34642)

Added

  • Proxy URL Generation in VerifyEmail (#34572)
  • Added Illuminate\Collections\Traits\EnumeratesValues::pipeInto() (#34600)
  • Added Illuminate\Http\Client\PendingRequest::withUserAgent() (#34611)
  • Added schedule:work command (#34618)
  • Added support for appendable (prepends) component attributes (09b887b, 53fbc9f)

Fixed

  • Fixed Illuminate\Http\Client\Response::throw() (#34597)
  • Fixed breaking change in migrate command (b2a3641)

Changed

  • Changing the dump and restore method for a PostgreSQL database (#34293)

Fixed

Added

  • Added tg:// protocol in "url" validation rule (#34464)
  • Allow dynamic factory methods to obey newFactory method on model (#34492, 4708e9e)
  • Added no-reload option to serve command (9cc2622)
  • Added perHour() and perDay() methods to Illuminate\Cache\RateLimiting\Limit (#34530)
  • Added Illuminate\Http\Client\Response::onError() (#34558, d034e2c)
  • Added X-Message-ID to Mailgun and Ses Transport (#34567)

Fixed

  • Fixed incompatibility with Lumen route function in Illuminate\Session\Middleware\StartSession (#34491)
  • Fixed: Eager loading MorphTo relationship does not honor each models $keyType (#34531, c3f44c7)
  • Fixed translation label ("Pagination Navigation") for the Tailwind blade (#34568)
  • Fixed save keys on increment / decrement in Model (77db028)

Changed

  • Allow modifiers in date format in Model (#34507)
  • Allow for dynamic calls of anonymous component with varied attributes (#34498)
  • Cast Expression as string so it can be encoded (#34569)

Added

  • Added Illuminate\Collections\LazyCollection::takeUntilTimeout() (0aabf24)
  • Added --schema-path option to migrate:fresh command (#34419)

Fixed

  • Fixed problems with dots in validator (#34355)
  • Maintenance mode: Fix empty Retry-After header (#34412)
  • Fixed bug with error handling in closure scheduled tasks (#34420)
  • Don't double escape on ComponentTagCompiler.php (12ba0d9)
  • Fixed mysqldump: unknown variable 'column-statistics=0 for MariaDB schema dump (#34442)

Added

  • Allow clearing an SQS queue by queue:clear command (#34383, de811ea)
  • Added Illuminate\Foundation\Auth\EmailVerificationRequest (4bde31b)
  • Auto handle Jsonable values passed to castAsJson() (#34392)
  • Added crossJoinSub() method to the query builder (#34400)
  • Added Illuminate\Session\Store::passwordConfirmed() (fb3f45a)

Changed

  • Check for view existence first in Illuminate\Mail\Markdown::render() (5f78c90)
  • Guess the model name when using the make:factory command (#34373)

Added

Fixed

  • Fixed minimal.blade.php (#34379)
  • Don't double escape on ComponentTagCompiler.php (ec75487)
  • Fixed dots in attribute names in DynamicComponent (2d1d962)

Changed

  • Show warning when view exists when using artisan make:component (#34376, 0ce75e0)
  • Call the booting/booted callbacks from the container (#34370)

Added

  • Added Illuminate\Foundation\Testing\Concerns\InteractsWithDatabase::castAsJson() (#34302)
  • Handle array hosts in Illuminate\Database\Schema\MySqlSchemaState (0920c23)
  • Added Illuminate\Pipeline\Pipeline::setContainer() (#34343)
  • Allow including a closure in a queued batch (#34333)

Fixed

Changed

  • Bumped minimum vlucas/phpdotenv version (#34336)
  • Pass an instance of the job to queued closures (#34350)

Added

  • Added Illuminate\Database\Eloquent\Factories\HasFactory::newFactory() (4a95372, a2cea84)

Fixed

  • Do not used now helper in Illuminate/Cache/DatabaseLock::expiresAt() (#34262)
  • Change placeholder in Illuminate\Database\Schema\MySqlSchemaState::load() (#34303)
  • Fixed bug in dynamic attributes Illuminate\View\ComponentAttributeBag::setAttributes() (93f4613)
  • Fixed Illuminate\View\ComponentAttributeBag::whereDoesntStartWith() (#34329)
  • Fixed Illuminate\Routing\Middleware\ThrottleRequests::handleRequestUsingNamedLimiter() (#34325)

Changed

  • Create Faker when a Factory is created (#34298)

Added

  • Added Illuminate\Database\Eloquent\Factories\Factory::raw() (#34278)
  • Added Illuminate\Database\Eloquent\Factories\Factory::createMany() (#34285, 69072c7)
  • Added the Countable interface to AssertableJsonString (#34284)

Fixed

  • Fixed the new maintenance mode (#34264)

Changed

  • Optimize command can also cache view (#34287)

Changed

  • Allow Illuminate\Collections\Collection::implode() when instance of Stringable (#34271)

Fixed

  • Fixed DatabaseUuidFailedJobProvider::find() job record structure (#34251)
  • Cast linkCollection to array in JSON pagination responses (#34245)
  • Change the placeholder of schema dump according to symfony placeholder in MySqlSchemaState::dump() (#34261)
  • Fixed problems with dots in validator (8723739)

Added

  • Added links property to JSON pagination responses (13751a1)

Fixed

  • Fixed bugs with factory creation in FactoryMakeCommand (c7186e0)

Revert

Changed

  • Update Illuminate\Database\Schema\MySqlSchemaState::executeDumpProcess() (#34233)

Added

  • Support array syntax in Illuminate\Routing\Route::uses() (f80ba11)

Fixed

  • Fixed BatchRepositoryFake TypeError (#34225)
  • Fixed dynamic component bug (4b1e317)

Changed

  • Give shadow a rounded edge to match content in tailwind.blade.php (#34198)
  • Pass the request to the renderable callback in Illuminate\Foundation\Exceptions\Handler::render() (#34200)
  • Update Illuminate\Database\Schema\MySqlSchemaState (d67be130, c87794f)
  • Respect local env in Illuminate\Foundation\Console\ServeCommand::startProcess() (75e792d)

Check the upgrade guide in the Official Laravel Upgrade Documentation. Also you can see some release notes in the Official Laravel Release Documentation.