v9.17.0 - 2022-06-07
- Added Illuminate/Database/Eloquent/Builder::withoutEagerLoad() (#42641)
- Allow random string generation to be controlled (#42669)
- Adds doesnt_start_with validation (#42683, de35bf2)
- Added quarterlyOn cron schedule frequency command (#42692)
- Free reserved memory before handling fatal errors (#42630, #42646)
- Prevent $mailer being reset when testing mailables that implement ShouldQueue (#42695)
- Added checks for Pusher 7.1 preps (#42632)
- Fixed grouping for user authorization (#42664)
- Allow assertions against pushed string based pushed jobs (#42676)
v9.16.0 - 2022-06-02
- Added Eloquent withWhereHas method (#42597)
- User authentication for Pusher (#42531)
- Added additional uuid testing helpers (#42619)
- Fix queueable notification's ID overwritten (#42581)
- Handle undefined array key error in route (#42606)
- Illuminate/Routing/Redirector::home() (#42600)
v9.15.0 - 2022-05-31
- Added --only-vendor option to route:list command (#42549)
- Added
Illuminate/Http/Client/PendingRequest::throwUnless()
(#42556) - Added
Illuminate/Support/Str::isJson()
(#42545) - Added
Illuminate/Filesystem/Filesystem::isEmptyDirectory()
(#42559) - Added
Add counts to route:list command
(#42551) - Support kebab case for slot name shortcut (#42574)
- Fix getting '0' from route parameter in Authorize middleware (#42582)
- Retain the original attribute value during validation of an array key with a dot for correct failure message (#42395)
- Allow bootable test traits to teardown (#42521)
- Pass thrown exception to $sleepMilliseconds closure in retry helper (#42532)
- Make HasTimestamps::updateTimestamps chainable (#42533)
- Remove meaningless parameter in
Illuminate/View/Concerns/ManagesEvents
(#42546) - Map integer parameter to parameter name when resolving binding field (#42571)
- Conditionable should return HigherOrderWhenProxy only when the args number is exactly 1 (#42555)
v9.14.1 - 2022-05-25
- Model::whereRelation add callback function (#42491)
- Add Conditionable Trait to Illuminate\Support\Carbon (#42500)
- Fix afterCommit and DatabaseTransactions (#42502)
- Fixed regression when only some route parameters are scoped (#42517)
v9.14.0 - 2022-05-24
- Added ability to add table comments for MySQL and Postgres (#42401)
- Added dynamic trashed factory state (#42414)
- Added Illuminate/Collections/Arr::prependKeysWith() (#42448)
- Added bootable traits to TestCase (#42394)
- Fix clone issue on updateOrCreate and firstOrCreate (#42434)
- Prevent double sanitized key in RateLimiter@tooManyAttempts (#42462)
- Add flush handler to output buffer for streamed test response (bugfix) (#42481)
- Adds attaches a concise error message to SES exceptions (#42426)
- Use duplicate instead of createFromBase to clone request when routes are cached (#42420)
- Use model route key when route parameter does not specifiy custom binding field but a different parameter does (#42425)
- Adds ability to have paginate() $perPage parameter as callable with access to $total (#42429)
- Extract ServeCommand env list to static property (#42444)
- Use route parameters in view (#42461)
v9.13.0 - 2022-05-17
- Added Illuminate/Collections/Traits/EnumeratesValues::value() (#42257)
- Added new TestResponse helper: assertJsonMissingPath (#42361)
- Added Illuminate/Support/Testing/Fakes/NotificationFake::assertCount() (#42366)
- Added new DetectLostConnections (#42377, #42382)
- Added Illuminate/Testing/TestResponse::collect() (#42384)
- Added full callable support to schedule:list (#42400)
- Added
Illuminate/Collections/Arr::map()
(#42398)
- Fixed PruneCommand finding its usage within other traits (#42350)
- Fix assert that exception is thrown without message (#42360)
- Skip parameter parsing for raw post body in HTTP Client (#42364)
- Consistency between digits and digits_between validation rules (#42358)
- Corrects the use of "failed_jobs" instead of "job_batches" in BatchedTableCommand (#42389)
- Update email.blade.php (#42388)
- Remove old monolog 1.x compat code (#42392)
- SesTransport: use correct Tags argument (#42390)
- Implement robust handling of forwarding of exception codes (#42393)
v9.12.2 - 2022-05-11
- Factory fails to eval models and factories when returned from closure (#42344)
- Added is_string check to QueriesRelationships@requalifyWhereTables (#42341)
v9.12.1 - 2022-05-10
- Fix TypeError in DeadlockException (#42337)
- Fixed type mismatch on Pusher::validate_channels() (#42340)
- Add custom segments on "remember me" for session rebuild (#42316)
v9.12.0 - 2022-05-10
- Added closure based exceptions testing (#42155)
- Allow forcing requests made via the Http client to be faked (#42230)
- Added 'throwIf' method to PendingRequest (#42260)
- Allow passing key/value arrays to getArguments and getOptions (#42268)
- Add whereNotMorphedTo, orWhereNotMorphedTo (#42264)
- Add method to extend localeArray generation (#42275)
- Added ability to set delay per channel based on notifiable instance (#42239)
- Added Illuminate/Pagination/CursorPaginator::onLastPage() (#42301)
- Added findOr method to Query/Builder (#42290)
- Fix too many channels with pusher broadcasting (#42287)
- Fix Str::Mask() for repeating chars (#42295)
- Fix EventFake::assertListening() for asserting string-based observer listeners (#42289)
- Fixed Loose comparison causes the value not to be saved (#41337)
- Fix multiple dots for digits_between rule (#42330)
- Enable to modify HTTP Client request headers when using beforeSending() callback (#42244)
- Make throttle lock acquisition retry configurable for concurrency limiter (#42242)
- Defers expanding callables on Factories (#42241)
- Add wherehas soft deleting scopes (#42100)
- Improve password checks (#42248)
- Set relation parent key when using forceCreate on HasOne and HasMany relations (#42281)
- Make sure the prefix override behaviours are the same between phpredis and predis drivers (#42279)
- Share logging context across channels and stacks (#42276)
v9.11.0 - 2022-05-03
- Added Illuminate/Collections/Arr::join() (#42197)
- Added has and missing methods to ValidatedInput (#42184)
- Added deprecation stack trace config option (#42235)
- Improve EventFake::assertListening() support for subscribers (#42193)
v9.10.1 - 2022-04-28
- Revert of "Illuminate/Routing/Router::middlewareGroup() will support array of the middlewares" (7563912)
v9.10.0 - 2022-04-27
- Add the ability to use alias when performing upsert via MySQL (#42053)
- Illuminate/Routing/Router::middlewareGroup() will support array of the middlewares (#42004, e6b84fb)
- Added Missing AsCommand attribute on schedule:list (#42069)
- Add the beforeRefreshingDatabase function to the Testing/RefreshDatabase trait (#42073)
- Added doesntExpectOutputToContain assertion method (#42096)
- Added a findOr method to Eloquent (#42092)
- Allow extension in
Illuminate/View/Compilers/Compiler.php
(68e41fd) - Support 'IS' and 'IS NOT' PostgreSQL operators (#42123)
- Added
str
andstring
methods to Illuminate/Http/Concerns/InteractsWithInput (c9d34b7) - Added methods to append and prepend jobs to existing chain (#42138)
- Make it so non-existent jobs run down the failed path instead of crashing (#42079)
- Fix schedule:work command Artisan binary name (#42083)
- Fix TrimStrings middleware with non-UTF8 characters (#42065)
- Copy locale and defaultLocale from original request in Request::createFrom() (#42080)
- Fix ViewErrorBag for JSON session serialization (#42090)
- Fix array keys from cached routes in CompiledRouteCollection::getRoutesByMethod() (#42078)
- Fix json_last_error issue with JsonResponse::setData (#42125)
- Fix bug in BelongsToMany where non-related rows are returned (#42087)
- Fix HasAttributes::mutateAttributeForArray when accessing non-cached attribute (#42130)
- Make password rule errors translatable (#42060)
- Redesign of the event:list Command. (#42068)
- Changed event:list command (#42084)
- Throw LostDbConnectionException instead of LogicException (#42102)
- Throw deadlock exception (#42129)
- Support Arr::forget() for nested ArrayAccess objects (#42142)
- Allow Illuminate/Collections/Enumerable::jsonSerialize() to return other types (#42133)
- Update schedule:list colouring output (#42153
v9.9.0 - 2022-04-19
- Add getAllTables support for SQLite and SQLServer schema builders (#41896)
- Added withoutEagerLoads() method to Builder (#41950)
- Added 'throw' method to PendingRequest (#41953)
- Configurable pluralizer language and uncountables (#41941)
- Fixed Error in Illuminate/Routing/Exceptions/StreamedResponseException (#41955)
- Fix PHP warnings when rendering long blade string (#41956)
- Fix ExcludeIf regression to use Closure over is_callable() (#41969)
- Fixes applying replacements to multi-level localization arrays (#42022)
- Improved Illuminate/Foundation/Http/Middleware/TrimStrings.php and Str::squish() (#41949, #41971)
- Use config session domain for maintenance cookie (#41961)
- Revert lazy command forcing (#41982)
v9.8.1 - 2022-04-12
- Revert "Standardize withCount() & withExists() eager loading aggregates (#41943)
v9.8.0 - 2022-04-12
- Added inbound option to CastMakeCommand (#41838)
- Added a way to retrieve the first column of the first row from a query (#41858)
- Make DatabaseManager Macroable (#41868)
- Improve Str::squish() (#41877, #41924)
- Added option to disable cached view (#41859)
- Make Connection Class Macroable (#41865)
- Added possibility to discover anonymous Blade components in other folders (#41637)
- Added
Illuminate/Database/Eloquent/Factories/Factory::set()
(#41890) - Added multibyte support to string padding helper functions (#41899)
- Allow to use custom log level in exception handler reporting (#41925)
- Illuminate/Support/Stringable::exactly() with Stringable value (#41846)
- Fixed afterCommit and RefreshDatabase (#41782)
- Fix null name for email address in
Illuminate/Mail/Message
(#41870) - Fix seeder property for in-memory tests (#41869)
- Fix empty paths for server.php (#41933)
- Fix ExcludeIf constructor (#41931)
- Set custom host to the serve command with environment variable (#41831)
- Add handling of object being passed into old method in Model (#41842)
- Catch permission exception when creating directory (#41871)
- Restore v8 behaviour of base query for relations (#41918, #41923)
- Standardize withCount() & withExists() eager loading aggregates (#41914)
v9.7.0 - 2022-04-05
- Make whereBelongsTo accept Collection (#41733)
- Database queries containing JSON paths support array index braces (#41767)
- Fire event before route matched (#41765)
- Added to
Illuminate/Http/Resources/ConditionallyLoadsAttributes::whenNotNull
method (#41769) - Added "whereIn" route parameter constraint method (#41794)
- Added
Illuminate/Queue/BeanstalkdQueue::bulk()
(#41789) - Added
Illuminate/Queue/SqsQueue::bulk()
(#41788) - Added String::squish() helper (#41791)
- Added query builder method whereJsonContainsKey() (#41802)
- Enable dispatchAfterResponse for batch (#41787)
- Factory generation fixes (#41688)
- Fixed Http Client throw boolean parameter of retry method (#41762, #41792)
- Ignore empty redis username string in PhpRedisConnector (#41773)
- Fixed support of nullable type for AsArrayObject/AsCollection (#41797, 05846e7)
- Fixed adding jobs from iterable to the pending batch (#41786)
- Http client: fix retry handling of connection exception (#41811)
- Enable batch jobs delay for database queue (#41758)
- Enable batch jobs delay for redis queue (#41783)
- Http client: dispatch "response received" event for every retry attempt (#41793)
- Http Client: provide pending request to retry callback (#41779)
- Allow non length limited strings and char for postgresql (#41800)
- Revert some Carbon::setTestNow() removals (#41810)
- Allow cleanup of databases when using parallel tests (#41806)
v9.6.0 - 2022-03-29
- Added whenTableHasColumn and whenTableDoesntHaveColumn on Schema Builder (#41517)
- Added Illuminate/Mail/Mailable::hasSubject() (#41575)
- Added
Illuminate/Filesystem/Filesystem::hasSameHash()
(#41586)
- Fixed deprecation warning in
Str::exists()
(d39d92d) - Fix artisan make:seeder command nested namespace and class name problem (#41534)
- Fixed Illuminate/Redis/Connections/PhpRedisConnection::handle() (#41546)
- Stop throwing LazyLoadingViolationException for recently created model instances (#41549)
- Close doctrineConnection on disconnect (#41584)
- Make throttle lock acquisition retry time configurable (#41516)
- Allows object instead of array when adding to PendingBatch (#41475)
- Exactly match scheduled command --name in schedule:test (#41528)
- Handle Symfony defaultName deprecation (#41555, #41595)
- Improve ScheduleListCommand (#41552, #41535, #41494)
- Remove useless if statement in Str::mask() (#41570)
v9.5.1 - 2022-03-15
- Revert "Fix the guard instance used." (#41491)
v9.5.0 - 2022-03-15
- Added callback support on implode Collection method. (#41405)
- Added
Illuminate/Filesystem/FilesystemAdapter::assertDirectoryEmpty()
(#41398) - Implement email "metadata" for SesTransport (#41422)
- Make assertPath() accepts Closure (#41409)
- Added callable support to operatorForWhere on Collection (#41414, #41424)
- Added partial queue faking (#41425)
- Added --name option to schedule:test command (#41439)
- Define
Illuminate/Database/Eloquent/Concerns/HasRelationships::newRelatedThroughInstance()
(#41444) - Added
Illuminate/Support/Stringable::wrap()
(#41455) - Adds "freezeTime" helper for tests (#41460)
- Allow for callables with beforeSending in
Illuminate/Http/Client/PendingRequest.php::runBeforeSendingCallbacks()
(#41489)
- Fixed deprecation warnings from route:list when filtering on name or domain (#41421)
- Fixes HTTP::pool response when a URL returns a null status code (#41412)
- Fixed recaller name resolution in
Illuminate/Session/Middleware/AuthenticateSession.php
(#41429) - Fixed the guard instance used in /Illuminate/Session/Middleware/AuthenticateSession.php (#41447)
- Fixed route:list --except-vendor hiding Route::view() & Route::redirect() (#41465)
- Add null typing to connection property in \Illuminate\Database\Eloquent\Factories\Factory (#41418)
- Update reserved names in GeneratorCommand (#41441)
- Redesign php artisan schedule:list Command (#41445)
- Extend eloquent higher order proxy properties (#41449)
- Allow passing named arguments to dynamic scopes (#41478)
- Throw if tag is passed but is not supported in
Illuminate/Encryption/Encrypter.php
(#41479) - Update PackageManifest::$vendorPath initialisation for cases, when composer vendor dir is not in project director (#41463)
v9.4.1 - 2022-03-08
- Fixed version of laravel
v9.4.0 - 2022-03-08
- Support modifying a char column type (#41320)
- Add "Mutex" column to 'schedule:list' command (#41338)
- Allow eloquent whereNot() and orWhereNot() to work on column and value (#41296)
- Allow VerifyCsrfToken's CSRF cookie to be extended (#41342)
- Added
soleValue()
to query builder (#41368) - Added
lcfirst()
toStr
andStringable
(#41384) - Added retryUntil method to queued mailables (#41393)
- Fixed middleware sorting for authenticating sessions (50b46db)
- Fixed takeUntilTimeout method of LazyCollection (#41354, #41370)
- Fixed directory for nested markdown files for mailables (#41366)
- Prevent serializing default values of queued jobs (#41348)
- Fixed get() and head() in
Illuminate/Http/Client/PendingRequest.php
(a54f481)
- Don't use global tap helper (#41326)
- Allow chaining of
Illuminate/Console/Concerns/InteractsWithIO::newLine
(#41327) - set destinations since bcc missing from raw message in Mail SesTransport (8ca43f4)
v9.3.1 - 2022-03-03
- Optionally cascade thrown Flysystem exceptions by @driesvints in laravel#41308
- Allow overriding transport type on Mailgun transporter by @jnoordsij in laravel#41309
- Change how Laravel handles strict morph map with pivot classes by @crynobone in laravel#41304
- $job can be an object in some methods by @villfa in laravel#41244
- Fix docblock on Batch class by @yoeriboven in laravel#41295
- Correct
giveConfig
param doc by @Neol3108 in laravel#41314 - Fix MySqlSchemaState does not add --ssl-ca to mysql cli by @DeepDiver1975 in laravel#41315
- Do not prepend baseUrl to absolute urls by @JaZo in laravel#41307
- Fixes getting the trusted proxies IPs from the configuration file by @nunomaduro in laravel#41322
- Add NotificationFake::assertNothingSentTo() by @axlon (#41232)
- Support --ssl-ca on schema load and dump by @DeepDiver1975 (#40931)
- Add whereNot() to Query Builder and Eloquent Builder by @marcovo (#41096)
- Added support for index and position placeholders in array validation messages by @Bird87ZA (#41123)
- Add resource binding by @aedart (#41233)
- Add ability to push additional pipes onto a pipeline via chain($pipes) by @stevebauman (#41256)
- Add option to filter out routes defined in vendor packages in route:list command by @amiranagram (#41254)
- Query PostgresBuilder fixes for renamed config 'search_path' by @derekmd (#41215)
- Improve doctypes for Eloquent Factory guessing methods by @bastien-phi (#41245)
- Fix Conditional::when and Conditional::unless when called with invokable by @bastien-phi (#41270)
- Improves Support\Collection reduce method type definition by @fdalcin (#41272)
- Fix inconsistent results of firstOrNew() when using withCasts() by @Attia-Ahmed (#41257)
- Fix implicitBinding and withTrashed route with child with no SoftDeletes trait by @stein-j (#41282)
- Unset Connection Resolver extended callback by @emrancu (#41216)
- Update Mailgun transport type by @driesvints (#41255)
- Added
Illuminate/Database/Eloquent/Casts/Attribute::make()
(#41014) - Added
Illuminate/Collections/Arr::keyBy()
(#41029) - Added expectsOutputToContain to the PendingCommand. (#40984)
- Added ability to supply HTTP client methods with JsonSerializable instances (#41055)
- Added
Illuminate/Filesystem/AwsS3V3Adapter::getClient()
(#41079) - Added Support for enum in Builder::whereRelation (#41091)
- Added X headers when using Mail::alwaysTo (#41101)
- Added of support Bitwise operators in query (#41112)
- Integrate Laravel CORS into framework (#41137)
- Added
Illuminate/Support/Str::betweenFirst()
(#41144) - Allow specifiying custom messages for Rule objects (#41145)
- Fixed Queue Failed_jobs insert issue with Exception contain UNICODE (#41020)
- Fixes attempt to log deprecations on mocks (#41057)
- Fixed loadAggregate not correctly applying casts (#41050)
- Do not transform JsonSerializable instances to array in HTTP client methods (#41077)
- Fix parsing config('database.connections.pgsql.search_path') (#41088)
- Eloquent: firstWhere returns Object instead of NULL (#41099)
- Fixed updated with provided qualified updated_at (#41133)
- Fix setPriority Call for MailChannel (#41120)
- Fixed route:list command output (#41177)
- Fix database migrations $connection property (#41161)
- Cursor pagination: convert original column to expression (#41003)
- Cast $perPage to integer on Paginator (#41073)
- Restore S3 client extra options (#41097)
- Use
latest()
withinnotifications()
inIlluminate/Notifications/HasDatabaseNotifications.php
(#41095) - Remove duplicate queries to find batch (#41121)
- Remove redundant check in FormRequest::validated() (#41115)
- Illuminate/Support/Facades/Storage::fake() changed (#41113)
- Use coalesce equal as provided by PHP >= 7.4 (#41174)
- Simplify some conditions with is_countable() (#41168)
- Pass AWS temporary URL options to createPresignedRequest method (#41156)
- Let Multiple* exceptions hold the number of records and items found (#41164)
- Added the ability to use the uniqueFor method for Jobs by @andrey-helldar in laravel#40974
- Add filtering of route:list by domain by @Synchro in laravel#40970
- Added dropForeignIdFor method to match foreignIdFor method by @bretto36 in laravel#40950
- Adds
Str::excerpt
by @nunomaduro in laravel#41000 - Make:model --morph flag to generate MorphPivot model by @michael-rubel in laravel#41011
- Add doesntContain to higher order proxies by @edemots in laravel#41034
- Improve types on model factory methods by @axlon in laravel#40902
- Add support for passing array as the second parameter for the group method. by @hossein-zare in laravel#40945
- Makes
ExceptionHandler::renderForConsole
internal on contract by @nunomaduro in laravel#40956 - Put the error message at the bottom of the exceptions by @nshiro in laravel#40886
- Expose next and previous cursor of cursor paginator by @gdebrauwer in laravel#41001
- Fix FTP root config by @driesvints in laravel#40939
- Allows tls encryption to be used with port different than 465 with starttls by @nicolalazzaro in laravel#40943
- Catch suppressed deprecation logs by @nunomaduro in laravel#40942
- Fix typo in method documentation by @shadman-ahmed in laravel#40951
- Patch regex rule parsing due to
Rule::forEach()
by @stevebauman in laravel#40941 - Fix replacing request options by @driesvints in laravel#40954
- Fix
MessageSent
event by @driesvints in laravel#40963 - Add firstOr() function to BelongsToMany relation by @r-kujawa in laravel#40828
- Fix
isRelation()
failing to check anAttribute
by @rodrigopedra in laravel#40967 - Fix default pivot attributes by @iamgergo in laravel#40947
- Fix enum casts arrayable behaviour by @diegotibi in laravel#40885
- Solve exception error: Undefined array key "", in artisan route:list command by @manuglopez in laravel#41031
- Fix Duplicate Route Namespace by @moisish in laravel#41021
- Fix the error message when no routes are detected by @LukeTowers in laravel#41017
- Fix mails with tags and metadata are not queuable by @joostdebruijn in laravel#41028
- Add disabled directive by @belzaaron in laravel#40900
- Widen the type of
Collection::unique
$key
parameter by @NiclasvanEyk in laravel#40903 - Makes
ExceptionHandler::renderForConsole
internal by @nunomaduro in laravel#40936 - Removal of Google Font integration from default exception templates by @bashgeek in laravel#40926
- Allow base JsonResource class to be collected by @jwohlfert23 in laravel#40896
- Fix Support\Collection reject method type definition by @joecampo in laravel#40899
- Fix SpoofCheckValidation namespace change by @eduardor2k in laravel#40923
- Fix notification email recipient by @driesvints in laravel#40921
- Fix publishing visibility by @driesvints in laravel#40918
- Fix Mailable->priority() by @giggsey in laravel#40917
- Improves
Support\Collection
each method type definition by @zingimmick in laravel#40879
- Update Mailable.php by @rentalhost in laravel#40868
- Switch to null coalescing operator in Conditionable by @inxilpro in laravel#40888
- Bring back old return behaviour by @ankurk91 in laravel#40880
Check the upgrade guide in the Official Laravel Upgrade Documentation. Also you can see some release notes in the Official Laravel Release Documentation.