Laravel Framework v5

https://github.com/laravel/framework

v5.8.35 (2019-09-03)

Added

  • Added support of NOT RLIKE SQL operator (#29788)
  • Added hebrew letters to Str:slug language array (#29838, ba772d6)
  • Added support of php7.4 (#29842)

Fixed

  • Fixed self-referencing MorphOneOrMany existence queries (#29765)
  • Fixed QueueFake::size() method (#29761, ddaf6e6)

Changed

  • Added note that the GD extension is required for generating images (#29770, #29831)
  • Changed monolog/monolog version to ^1.12 (#29837)

v5.8.34 (2019-08-27)

Fixed

  • Fixed MailMessage::render() if view method was used (#29698)
  • Fixed setting of numeric values as model attribute (#29714)
  • Fixed mocking of events until method in MocksApplicationServices (#29708)
  • Fixed: Use custom attributes in lt/lte/gt/gte rules messages (#29716)

Changed:

  • Changed applying of Aws Instance Profile (#29738)

v5.8.33 (2019-08-20)

Added

  • Added ValidatesWhenResolvedTrait::passedValidation() callback (#29549)
  • Implement new types for email validation support (#29589)
  • Added Redis 5 support (#29606)
  • Added insertOrIgnore support (#29639, 46d7e96, #29645)
  • Allowed to override the existing Whoops handler.(#29564)

Fixed

  • Fixed non-displayable boolean values in validation messages (#29560)
  • Avoid undefined index errors when using AWS IAM (#29565)
  • Fixed exception message in the ProviderRepository::writeManifest() (#29568)
  • Fixed invalid link expiry count in ResetPassword (#29579)
  • Fixed command testing of output and questions expectations (#29580)
  • Added ignoring of classes which are not instantiable during event discovery (#29587)
  • Used real classname for seeders in the output (#29601)

Refactoring

v5.8.32 (2019-08-13)

Fixed

  • Fixed top level wildcard validation for distinct validator (#29499)
  • Fixed resolving of columns with schema references in Postgres (#29448)
  • Only remove the event mutex if it was created (#29526)
  • Fixed restoring serialized collection with deleted models (#29533, 74b62bb)

v5.8.31 (2019-08-06)

Fixed

  • Fixed FatalThrowableError in updateExistingPivot() when pivot is non-existent (#29362)
  • Fixed worker timeout handler when there is no job processing (#29366)
  • Fixed assertJsonValidationErrors() with muliple messages (#29380)
  • Fixed UPDATE queries with alias (#29405)

Changed

  • Illuminate\Cache\ArrayStore::forget() returns false on missing key (#29427)
  • Allow chaining on QueryBuilder::dump() method (#29437)
  • Change visibility to public for hasPivotColumn() method (#29367)
  • Added line break for plain text mails (#29408)
  • Use date_create to prevent date validator warnings (#29342, #29389)

v5.8.30 (2019-07-30)

Added

  • Added MakesHttpRequests::option() and MakesHttpRequests::optionJson() methods (#29258)
  • Added Blueprint::uuidMorphs() and Blueprint::nullableUuidMorphs() methods (#29289)
  • Added MailgunTransport::getEndpoint() and MailgunTransport::setEndpoint() methods (#29312)
  • Added WEBP to image validation rule (#29309)
  • Added TestResponse::assertSessionHasInput() method (#29327)
  • Added support for custom redis driver (#29275)
  • Added Postgres support for collation() on columns (#29213)

Fixed

  • Fixed collections with JsonSerializable items and mixed values (#29205)
  • Fixed MySQL Schema Grammar $modifiers order (#29265)
  • Fixed UPDATE query bindings on PostgreSQL (#29272)
  • Fixed default theme for Markdown mails (#29274)
  • Fixed UPDATE queries with alias on SQLite (#29276)
  • Fixed UPDATE and DELETE queries with join bindings on PostgreSQL (#29306)
  • Fixed support of DateTime objects and int values in orWhereDay(), orWhereMonth(), orWhereYear() methods in the Builder (#29317)
  • Fixed DELETE queries with joins on PostgreSQL (#29313)
  • Prevented a job from firing if job marked as deleted (#29204, 1003c27)
  • Fixed model deserializing with custom Model::newCollection() (#29196)

Reverted

Changed

  • Allocate memory for error handling to allow handling memory exhaustion limits (#29226)
  • Teardown test suite after using fail() method (#29267)

v5.8.29 (2019-07-16)

Added

  • Added possibility for WithFaker::makeFaker() use local app.faker_locale config (#29123)
  • Added ability to set theme for mail notifications (#29132)
  • Added runtime for each migration to output (#29149)
  • Added possibility for whereNull and whereNotNull to accept array columns argument (#29154)
  • Allowed Console\Scheduling\ManagesFrequencies::hourlyAt() to accept array of integers (#29173)

Performance

  • Improved eager loading performance for MorphTo relation (#29129)

Fixed

  • Fixed Builder::whereDay() and Builder::whereMonth() with raw expressions
  • Fixed DELETE queries with alias on SQLite (#29164)
  • Fixed queue jobs using SerializesModels losing order of passed in collections (#29136)
  • Fixed conditional binding for nested optional dependencies (#29180)
  • Fixed: validator not failing on custom rule when message is null (#29174)
  • Fixed DELETE query bindings (#29165)

v5.8.28 (2019-07-09)

Added

  • Make TestResponse tappable (#29033)
  • Added Support\Collection::mergeRecursive() method (#29084)
  • Added Support\Collection::replace() and Support\Collection::replaceRecursive() methods (#29088)
  • Added Session\Store::only() method (#29107)

Fixed

  • Fixed cache repository setMultiple with an iterator (#29039)
  • Fixed cache repository getMultiple implementation (#29047)

Reverted

Changed

  • Fail job immediately after it timeouts if it wont be retried (#29024)

v5.8.27 (2019-07-02)

Added

  • Let mix helper use app.mix_url config (#28952)
  • Added RedisManager::setDriver() method (#28985)
  • Added whereHasMorph() and corresponding methods to work with MorphTo relations (#28928)

Fixed

Changed

  • Prevented TestResponse::dump() and TestResponse::dumpHeaders() methods from ending execution of the script (#28960)
  • Allowed TestResponse::dump() and TestResponse::dumpHeaders() methods chaining (#28967)
  • Allowed to NotificationFake accept custom channels (#28969)
  • Replace contents of service manifest atomically (#28973)
  • Pass down the serverVersion database connection option to Doctrine DBAL connection (#28964, 1b55b28)
  • Replace self:: with static:: in the Relation::getMorphedModel() (#28974)
  • Set a message for SuspiciousOperationException (#29000)
  • Storing Mailgun Message-ID in the headers after sending (#28994)

v5.8.25 (2019-06-25)

Added

  • Added json option to route:list command (#28894)

Fixed

  • Fixed columns parameter on paginate method (#28937)
  • Prevent event cache from firing multiple times the same event(s) (#28904)
  • Fixed TestResponse::assertJsonMissingValidationErrors() on empty response (#28595, #28913)
  • Fixed percentage sign in filename fallback in the FilesystemAdapter::response() (#28947)

Changed

  • Allow TestResponse::assertViewHas() to see all data (#28893)
  • Let mix helper use app.asset_url (#28905)

v5.8.24 (2019-06-19)

Added

  • Added possibility to assert that the session contains a given piece of data using a closure in TestResponse::assertSessionHas() (#28837)
  • Added TestResponse::assertUnauthorized() (#28851)
  • Allowed to define port in ServeCommand via SERVER_PORT env variable (#28849, 6a18e73)
  • Allowed console environment argument to be separated with a space (#28869)
  • Added @endcomponentFirst directive (#28884)
  • Added optional parameter $when to retry helper (85c0801)

Fixed

  • Fixed Builder::dump() and Builder::dd() with global scopes (#28858)

Reverted

Changed

  • Handle SuspiciousOperationException in router as NotFoundHttpException (#28866)

v5.8.23 (2019-06-14)

Fixed

  • Fixed strict comparison in redis configuration Parsing. (#28830)

Changed

  • Improved support for arrays on TestResponse::assertJsonValidationErrors() (2970dab)

v5.8.22 (2019-06-12)

Added

  • Added @componentFirst directive (#28783)
  • Added support for typed eager loads (#28647, d72e3cd)
  • Added Related and Recommended to Pluralizer (#28749)
  • Added Str::containsAll() method (#28806)
  • Added: error handling for maintenance mode commands (#28765, 9e20849)
  • Added message value assertion to TestResponse::assertJsonValidationErrors() (#28787)
  • Added: Automatically bind the viewAny method to the index controller action (#28820)

Fixed

  • Fixed database rules with where clauses (#28748)
  • Fixed: MorphTo Relation ignores parent $timestamp when touching (#28670)
  • Fixed: Sql Server issue during dropAllTables when foreign key constraints exist (#28750, #28770)
  • Fixed Model::getConnectionName() when Model::cursor() used (#28804)

Changed

  • Made force an optional feature when using ConfirmableTrait. (#28742)
  • Suggest resolution when no relationship value is returned in the Model::getRelationshipFromMethod() (#28762)

v5.8.21 (2019-06-05)

Fixed

  • Fixed redis cluster connection parsing (2bcb405)

v5.8.20 (2019-06-04)

Added

  • Added viewAny() to dummy policy class (#28654, #28671)
  • Added fullpath option to make:migration command (#28669)

Performance improvement

Fixed

  • Fixed artisan cache:clear command with a redis cluster using the Predis library (#28706)

v5.8.19 (2019-05-28)

Added

  • Added optional DYNAMODB_ENDPOINT env variable to configure endpoint for DynamoDB (#28600)
  • Added Illuminate\Foundation\Application::isProduction() method (#28602)
  • Allowed exception reporting in rescue() to be disabled (#28617)
  • Allowed to parse Url in Redis configuration (#28612, f4cfb32)
  • Allowed setting additional (sourceip and localdomain) smtp config options (#28631, 435c05b)

Fixed

  • Fixed Eloquent UPDATE queries with alias (#28607)
  • Fixed Illuminate\Cache\DynamoDbStore::forever() (#28618)
  • Fixed event:list command, when using a combination of manually registering events and event auto discovering (#28624)

Performance improvement

  • Improve performance for Arr::flatten() (#28614)

Changed

  • Added id to ModelNotFoundException exception in ImplicitRouteBinding (#28588)

v5.8.18 (2019-05-21)

Added

  • Added html as a new valid extension for views (#28541)
  • Added: provide notification callback withSwiftMessage in MailMessage (#28535)

Fixed

  • Fixed Illuminate\Cache\FileStore::getPayload() in case of broken cache (#28536)
  • Fixed exception: The filename fallback must only contain ASCII characters in the Illuminate\Filesystem\FilesystemAdapter::response() (#28551)

Changed

  • Make Support\Testing\Fakes\MailFake::failures() returns an empty array (#28538)
  • Make Support\Testing\Fakes\BusFake::pipeThrough() returns $this (#28564)

Refactoring

2019/05/14

Added

  • Added Illuminate\Foundation\Testing\TestResponse::dumpHeaders() (#28450)
  • Added ends_with validation rule (#28455)
  • Added possibility to use a few columns arguments in the route:list command (#28459)
  • Added retryAfter in Mail\SendQueuedMailable and Notifications\SendQueuedNotifications object (#28484)
  • Added Illuminate\Foundation\Console\Kernel::scheduleCache() (6587e78)
  • Added support for multiple --path options within migrate commands (#28495)
  • Added Tappable trait (#28507)
  • Added support auto-discovery for events in a custom application directory, that sets via Illuminate\Foundation\Application::useAppPath() (#28493)
  • Added passing of notifiable email through reset link (#28475)
  • Added support flush db on clusters in PhpRedisConnection and PredisConnection (f4e8d5c)

Fixed

  • Fixed session resolver in RoutingServiceProvider (without bind of session in Container) (#28438)
  • Fixed route:list command when routes were dynamically modified (#28460, #28463)
  • Fixed required validation with multiple passes() calls (#28502)
  • Fixed the collation bug when changing columns in a migration (#28514)
  • Added password to the RedisCluster only if redis >= 4.3.0 (1371940)
  • Used escapeshellarg on windows symlink in Filesystem::link()(44c3feb)

Changed

  • Reset webpack file for none preset (#28462)

v5.8.16 (2019-05-07)

Added

  • Added: Migration Events (#28342)
  • Added ability to drop types when running the migrate:fresh command (#28382)
  • Added Renderable functionality to MailMessage (#28386)

Fixed

  • Fixed the remaining issues with registering custom Doctrine types (#28375)
  • Fixed fromSub() and joinSub() with table prefix in Query\Builder (#28400)
  • Fixed false positives for Schema::hasTable() with views (#28401)
  • Fixed sync results with custom Pivot model (#28416, e31d131)

Changed

  • Modified None And React presets with vue-template-compiler (#28389)
  • Changed navbar-laravel class to bg-white shadow-sm class in layouts\app.stub (#28417)
  • Don't execute query in Builder::findMany() when ids are empty Arrayable (#28432)
  • Added parameter password for RedisCluster construct function (#28434)
  • Pass email verification URL to callback in Auth\Notifications\VerifyEmail (#28428)
  • Updated RouteAction::parse() (#28397)
  • Updated Events\DiscoverEvents (#28421, #28426)

v5.8.15 (2019-04-27)

Added

Changed:

  • Fix BelongsToMany read wrong parent key (#28317)
  • Fix make:auth not using apps configured views path (#28324, e78cf02)
  • Add custom message to thrown exception (#28335)
  • Fix recursive replacements in Str::replaceArray() (#28338)
  • Add the dd method to the query builder (#28357)
  • Improve output of "assertSessionDoesntHaveErrors" when called with no arguments (#28359)
  • Allow logging out other devices without setting remember me cookie (#28366)
  • Break out password reset credentials into a method (#28370)

v5.8.14 (2019-04-23)

Added

  • Implemented Job Based Retry Delay (#28265)

Changed

  • Update auth stubs with @error blade directive (#28273)
  • Convert email data tables to layout tables (#28286)

Reverted

Refactoring

  • Replace code with Null Coalescing Operator (#28280, #28287)

v5.8.13 (2019-04-18)

Added

  • Added @error blade directive (#28062)
  • Added the ability to register custom Doctrine DBAL types in the schema builder (#28214, 91a6afe)

Fixed

Reverted

v5.8.12 (2019-04-16)

Added

  • Added Illuminate\Support\Collection::duplicates() (#28181)
  • Added Illuminate\Database\Eloquent\Collection::duplicates() (#28194)
  • Added Illuminate\View\FileViewFinder::getViews() (#28198)
  • Added helper methods onSuccess() \ onFailure() \ pingOnSuccess() \ pingOnFailure() \ emailOnFailure() to Illuminate\Console\Scheduling\Event (#28167)
  • Added SET datatype on MySQL Grammar (#28171)
  • Added possibility for use in / not in operators in the query builder (#28192)

Fixed

  • Fixed memory leak in JOIN queries (#28220)
  • Fixed circular dependency in Support\Testing\Fakes\QueueFake for undefined methods (#28164)
  • Fixed exception in lt \ lte \ gt \ gte validations with different types (#28174)
  • Fixed string quoting for SQL Server (#28176)
  • Fixed whereDay and whereMonth when passing int values (#28185)

Changed

  • Added autocomplete attributes to the html stubs (#28226)
  • Improved event:list command (#28177, cde1c5d)
  • Updated Illuminate\Database\Console\Factories\FactoryMakeCommand to generate more IDE friendly code (#28188)
  • Added missing LockProvider interface on DynamoDbStore (#28203)
  • Change session's user_id to unsigned big integer in the stub (#28206)

v5.8.11 (2019-04-10)

Added

  • Allowed to call macros directly on Illuminate\Support\Facades\Date (#28129)
  • Allowed lock to be configured in local filesystems (#28124)
  • Added tracking of the exit code in scheduled event commands (#28140)

Fixed

  • Fixed of escaping single quotes in json paths in Illuminate\Database\Query\Grammars\Grammar (#28160)
  • Fixed event discovery with different Application Namespace (#28145)

Changed

  • Added view path to end of compiled blade view (in case if path is not empty) (#28117, #28141)
  • Added realpath to app_path during string replacement in Illuminate\Foundation\Console\Kernel::load() (82ded9a)

Refactoring

  • Refactoring of Illuminate\Foundation\Events\DiscoverEvents::within() (#28122, 006f999)

v5.8.10 (2019-04-04)

Added

  • Added replicating model event (#28077)
  • Make NotificationFake macroable (#28091)

Fixed

  • Exclude non-existing directories from event discovery (#28098)

Changed

  • Sorting of events in event:list command (3437751)
  • Removed path hint in compiled view (33ce7bb)

v5.8.9 (2019-04-02)

Added

Fixed

  • Fixed serializing a collection from a Resource with preserveKeys property (#27985)
  • Fixed: SoftDelete::runSoftDelete and SoftDelete::performDeleteOnModel with overwritten Model::setKeysForSaveQuery (#28081)

Changed

  • Update forever cache duration for database driver from minutes to seconds (#28048)

Refactoring:

  • Refactoring of Illuminate\Auth\Access\Gate::callBeforeCallbacks() (#28079)

v5.8.8 (2019-03-26)

Added

  • Added Illuminate\Database\Query\Builder::forPageBeforeId() method (#28011)

Fixed

  • Fixed BelongsToMany::detach() with custom pivot class (#27997)
  • Fixed incorrect event namespace in generated listener by event:generate command (#28007)
  • Fixed unique validation without ignored column (#27987)

Changed

  • Added parameters argument to resolve helper (#28020)
  • Don't add the path only if path is empty in compiled view (#27976)

Refactoring

  • Refactoring of env() helper (#27965)

Fixed

  • Fix: Locks acquired with block() are not immediately released if the callback fails (#27957)

Changed

  • Allowed retrieving env variables with getenv() (#27958, c37702c)
  • Used stripslashes for Validation\Rules\Unique.php (#27940, 34759cc)

Refactoring

  • Refactoring of Illuminate\Http\Concerns::allFiles() (#27955)

Added

  • Added Illuminate\Database\DatabaseManager::setReconnector() (#27845)
  • Added Illuminate\Auth\Access\Gate::none() (#27859)
  • Added OtherDeviceLogout event (#27865, 5e87f2d)
  • Added even and odd flags to the Loop variable in the blade (#27883)

Changed

  • Add replacement for lower danish æ (#27886)
  • Show error message from exception, if message exist for 403.blade.php and 503.blade.php error (#27893, #27902)

Fixed

  • Fixed seeding logic in Arr::shuffle() (#27861)
  • Fixed Illuminate\Database\Query\Builder::updateOrInsert() with empty $values (#27906)
  • Fixed Application::getNamespace() method (#27915)
  • Fixed of store previous url (#27935, 791992e)

Security

  • Changed Validation\Rules\Unique.php (da4d4a4). You can read more here

v5.8.4 (2019-03-12)

Added

  • Added Illuminate\Support\Collection::join() method (#27723)
  • Added Illuminate\Foundation\Http\Kernel::getRouteMiddleware() method (#27852)
  • Added danish specific transliteration to Str class (#27857)

Fixed

  • Fixed JSON boolean queries (#27847)

v5.8.3 (2019-03-05)

Added

  • Added Collection::countBy (#27770)
  • Added protected EloquentUserProvider::newModelQuery() (#27734, 9bb7685)
  • Added protected StartSession::saveSession() method (#27771, 76c7126)
  • Allow belongsToMany to take Model/Pivot class name as a second parameter (#27774)

Fixed

  • Fixed environment variable parsing (#27706)
  • Fixed guessed policy names when using Gate::forUser (#27708)
  • Fixed via as string in the Notification (#27710)
  • Fixed StartSession middleware (499e4fe)
  • Fixed stack channel's bug related to the level (#27726, bc884bb)
  • Fixed email validation for not string values (#27735)

Changed

  • Check if MessageBag is empty before checking keys exist in the MessageBag (#27719)

v5.8.2 (2019-02-27)

Fixed

  • Fixed quoted environment variable parsing (#27691)

v5.8.1 (2019-02-27)

Added

  • Added Illuminate\View\FileViewFinder::setPaths() (#27678)

Changed

  • Return fake objects from facades (#27680)

Reverted

  • reverted changes related to the Facade (63d87d7)

v5.8.0 (2019-02-26)

Check the upgrade guide in the Official Laravel Documentation.

v5.7.28 (2019-02-26)

Added

  • Add support for Pheanstalk 4.x (#27622)
  • Allow configuration of token guard keys (#27585)

Changed

  • Update vue preset to exclude @babel/preset-react (#27645)
  • Reflash the session for the broadcasting auth call (#27647)
  • Improving readability in AuthenticateWithBasicAuth Middleware (#27661)
  • Use safe container getter on Pipeline (#27648)

Fixed

  • Fixed Postgres grammar when using union queries (#27589)
  • Fixed an issue when using Mail::queue to queue Mailables (#27618)
  • Fixed error in Foundation\Exceptions\Handler (#27632)

v5.7.26 (2019-02-12)

Added

  • Added Illuminate\Pipeline\Pipeline::thenReturn() (#27429)
  • Added Illuminate\Cache\TaggedCache::getTags() (#27445)
  • Added Illuminate\Http\ResponseTrait::getCallback() (#27464)
  • Added license file to each component (9e57e8b)
  • Added Model::withoutEvents() method (#27419, 5c5d6b2)

Reverted

  • Revert of "Fixed wrong class being used when eager loading nullable MorphTo with withDefault() (#27411)"(9bbf644)

Changed

  • Improved error message in Illuminate\Foundation\Testing\TestResponse::assertJsonValidationErrors() (#27495, 98010da)
  • Illuminate\Support\Testing\Fakes\EventFake::dispatch() will return response (#27430)

v5.7.25 (2019-02-05)

Added

  • Allowed specifying custom translation for date relative messages (#27341)
  • Add computed support to SQL Server schema grammar (#27346, 1c74d7f)
  • Allowed ENV to control paths of cache files for services, packages and routes (#27389)

Fixed

  • Fixed BelongsToMany pivot relationship child with loaded relations wakeup (#27358)
  • Fixed wrong class being used when eager loading nullable MorphTo with withDefault() (#27411)

Changed

  • Removed php_network_getaddresses: getaddrinfo failed: Name or service not known in DetectsLostConnections trait (#27418)

v5.7.24 (2019-01-30)

Fixed

v5.7.23 (2019-01-29)

Added

  • Added AbstractPaginator::getOptions() method (#27273)
  • Added Communication link failure to DetectsLostConnections trait (#27307)
  • Added orWhere() proxy for scopes to EloquentBuilder (#27281, 2e6fe85)
  • Allow the app path to be configured (#27332, d73e672)
  • Added config for using WhatFailureGroupHandler when StackDriver created for Logger (#27308 ,6a92651)

Fixed

  • Fixed QueueableCollection serialization of Eloquent Models when using Binary IDs (#27271)
  • Replaced newModelQuery() with newQueryWithoutRelationships() for UPDATE/DELETE queries (#27277)

Changed

  • Apply parameters to entire localization array (#27254)
  • Added line about expiring password reset in notification email (#27324, 80c5aec)
  • "Go Home" link will redirect to the home route on exception page (#27343)

v5.7.22 (2019-01-22)

Fixed

  • Fixed TestResponse::assertJsonValidationErrors() when there are no errors (#27190)

Changed

  • Allowed TestResponse::assertJsonMissingValidationErrors() to be called without an argument (#27176)
  • Updated vue preset's vue-stubs for laravel-mix 4 compatibility (#27229)
  • Updated preset to use @babel/preset-react (#27235)
  • Used config to resolve the database value during tests. (#27240)

v5.7.21 (2019-01-15)

Fixed

  • Fixed Blueprint::removeColumn() (#27115, #27122)
  • Fixed allowing of null broadcast connection driver (#27135)
  • Fixed ModelMakeCommand::handle() should always return bool value (#27156)
  • Fixed TestResponse::assertSessionDoesntHaveErrors() when there is no errors (#27145)
  • Fixed default message is localization twice in 403.blade.php error page (4a08120)

Changed

  • Replaced get_called_class() to static::class (#27146)
  • Re-throw NoMatchingExpectationException from PendingCommand (#27158)

v5.7.20 (2019-01-08)

Added

  • Added chunkById support in relations (#26919)
  • Added Collection::whereNotBetween method (#27028)
  • Allowed predefined log channels to change formatter from config (#26895)
  • Allowed storage assertions (FilesystemAdapter::assertExists / FilesystemAdapter::assertMissing) to handle multiple files at once (#26975)
  • Added Adaptive Server connection failed to DetectsLostConnections trait (#27055)
  • Added Route::originalParameters() (#27056)
  • Added QueueFake::pushedJobs() (#27089, 695ffa1)

Fixed

  • Prevents unnecessary queries when lazy loading empty relationships (#26992)
  • Fixed broken Command::setHidden method (#27005)
  • Fixed Str::slug method (#27002)
  • Ignore --seed option for artisan migrate --pretend (#27015)
  • Fixed previousUrl in the session if the call is prefetch (#27017)
  • Fixed nullable MorphTo touching (#27031)
  • Fixed Collection::loadMissing() with duplicate relation names (#27040)
  • Fixed some commands (#27020)
  • Ensured the command context is forwarded to calls (#27012, #27065)
  • Fixed Collection::loadMorph() issue relations loading issue (#27081)

Changed

  • Removed HasOneOrMany::update() since Builder::update() already adds the UPDATED_AT timestamp. (#27026)
  • Changed Name or service not known to php_network_getaddresses: getaddrinfo failed: Name or service not known in DetectsLostConnections trait (#27054, 5459ac1)
  • Changed Eloquent ApiResource merge() methods to accept JsonResource object (#27068)
  • Stop email re-verification with same link (#27070)

v5.7.19 (2018-12-18)

Added

  • Added Illuminate\Support\Collection::whereBetween method (#26888)

Fixed

  • Reverted changes related to app()->call() (fefaf46)
  • Reset doctrineConnection property on Database/Connection when reconnecting (#26890)

v5.7.18 (2018-12-17)

Added

  • Added missing starts_with validation message (#26822)
  • Added Facade::resolved() method to register pending callback until the service is available. (#26824)
  • Added env var APP_CONFIG_CACHE to control cache config path (578bc83)

Changed

  • Changed TransportManager::createMailDriver (#26846)

Fixed

v5.7.17 (2018-12-12)

Added

  • Added Database\Query\Builder::insertUsing method (#26732, 8216b46)
  • Added Database\Query\Builder::havingBetween method (#26758)
  • Added Packets out of order. Expected string to DetectsLostConnections trait (#26760)
  • Added NOT VALID option for skipping validation when adding postgres foreign keys (#26775)

Fixed

  • Fixed: Using store on an uploaded file when you push an empty file (#26809)
  • Fixed hiding for hidden commands (#26781)

v5.7.16 (2018-12-05)

Added

  • Added localization for 403.blade.php and 503.blade.php (#26751)
  • Changing the Migrator to accept not only migration directory paths, but migration file paths too (#26642, c4b13bf)

Fixed

  • Fixed self-referencing HasManyThrough existence queries (#26662)
  • Fixed HasManyThrough existence queries with same parent and through parent table (#26676)
  • Fixed breaking eager loading with "incrementing" string keys (#26688)
  • Remove the Register <li> when the route doesn't exist in app.stub (#26708)
  • Fixed Collection::some method (#26696)
  • Revert breaking change in TestResponse::decodeResponseJson method (#26713)
  • Fixed PhpRedisConnection::mget (#26716)
  • Fixed Eloquent\Collection::loadCount attribute syncing (#26714)
  • Fixed Illuminate\Foundation\Testing\Concerns\InteractsWithDatabase::seed for array accepting (#26734)
  • Fixed FormRequest validation triggering twice (#26731)

Changed

  • Changed markdown on auth stub view (Auth/Console/stubs/make/views/auth/login.stub) (#26648)
  • Moved Slack and Nexmo notification channels to the own packages laravel/nexmo-notification-channel, laravel/slack-notification-channel (#26689, #26727)

Deprecated

  • $cachedSchema property in UrlGenerator is deprecated. Will be renamed to the $cachedScheme in 5.8 (#26640)

v5.7.15 (2018-11-26)

Added

  • Added date_equals validation message (#26584)
  • Added starts_with validation rule (#26612)
  • Added relationship getters BelongsToMany::getParentKeyName, BelongsToMany::getRelatedKeyName, HasManyThrough::getFirstKeyName, HasManyThrough::getForeignKeyName, HasManyThrough::getSecondLocalKeyName, HasOneOrMany::getLocalKeyName, MorphToMany::getInverse (#26607)
  • Make ResourceCollection countable (#26595)

Fixed

  • Fixed duplicate validation issue in FormRequest::validated method (#26604)
  • Prevent breaking eager loading with string keys (#26622)

v5.7.14 (2018-11-21)

Added

  • Added Macroable trait to Illuminate\Cookie\CookieJar (#26445)
  • Added ability to disable password reset route (#26459)
  • Added ability to publish error views (#26460)
  • Added ability to set notifcation tries and timeout (#26493)
  • Added mail.log_channel config for make log for mail driver configurable (#26510)
  • Allowed asset root urls to be configurable via app.asset_url (9172a67)
  • Added Error while sending QUERY packet string to DetectsLostConnections trait (#26233)
  • Added env override for running in console (a36906a, 19f2245)

Fixed

  • Fixed UNION aggregate queries with columns (#26466)
  • Allowed migration table name to be guessed without _table suffix (#26429)
  • Fixed TestResponse::assertExactJson for empty JSON objects (#26353, e6ebc8d, 621d91d, #26508)
  • Fixed cache repository for PHP from 7.2.12v (#26495)
  • Fixed user authorization check for Email Verification (#26528)
  • Fixed nested JOINs on SQLite (#26567)

Changed

  • Improved eager loading performance (#26434, #26453, 3992140, #26471, a3738cf, #26531)
  • Adjusted mix missing asset exceptions (#26431)
  • Used asset helper to generate full path urls in exception views (#26411)
  • Changed Illuminate\Foundation\Testing\Concerns\MocksApplicationServices::withoutJobs method (#26437)
  • Cached distinct validation rule data (#26509)
  • Improved DNS Prefetching in view files (#26552)

v5.7.13 (2018-11-07)

Added

  • Added ability to return an array of messages in a custom validation rule (#26327)
  • Added whenEmpty/ whenNotEmpty / unlessEmpty / unlessNotEmpty methods to Collection (#26345)
  • Added Illuminate\Support\Collection::some method (#26376, 8f7e647)
  • Added Illuminate\Cache\Repository::missing method (#26351)
  • Added Macroable trait to Illuminate\View\Factory (#26361)
  • Added support for UNION aggregate queries (#26365)

Changed

  • Updated AbstractPaginator::appends to handle null (#26326)
  • Added "guzzlehttp/guzzle": "^6.3", to composer.json (#26328)
  • Showed exception message on 403 error page when message is available (#26356)
  • Don't run TransformsRequest twice on ?query= parameters (#26366)
  • Added missing logging options to slack log driver (#26360)
  • Use cascade when truncating table in PostgreSQL (#26389)
  • Allowed pass absolute parameter in has valid signature request macro (#26397)

Changed realization

  • Used Request::validate macro in Auth traits (#26314)

v5.7.12 (2018-10-30)

Added

  • Added CacheManager::forgetDriver method (#26264, fd9ef49)
  • Added Illuminate\Foundation\Http\Kernel::getMiddlewareGroups method (#26268)
  • Added an sqlite config option (foreign_key_constraints) to enable / disable foreign key constraints (#26298, 674f8be, #26306)

Fixed

  • Checked $absolute parameter in UrlGenerator::signedRoute (#26265)
  • Fixed error in resource building after running php artisan preset none command (41becda, #26244)
  • Fixed whereDoesntHave() and doesntHave() with nested relationships (#26228)
  • Fixed filesystem locking hangs in PackageManifest::build() (#26254)

Changed

  • Made expectation closure optional for InteractsWithContainer::mock and InteractsWithContainer::spy (#26242)
  • Allowed multiple createPayloadCallback on queues (#26250, 6e3d568)
  • Changed wording on default 403 view (#26258)
  • Bump vue.js to ^2.5.17 in artisan preset vue command (89f56bf, #26244)
  • Allowed adding additional $manyMethods when extending the model class (#26307)

v5.7.11 (2018-10-24)

Added

  • Added decimal:<num> cast to Model (#26173)
  • Allowed updateExistingPivot to receive an arrayable item (#26167)
  • Added setIntendedUrl method to Routing/Redirector.php (#26227)
  • Added ORA-03114 string to DetectsLostConnections trait (#26233)

Fixed

  • Fixed an issue where the worker process would not be killed by the listener when the timeout is exceeded (#25981)

Changed

  • Reverted filesystem changes which were done in #26010 (#26231)

v5.7.10 (2018-10-23)

Added

  • Added loadCount method to eloquent collections (#25997)
  • Added support for identity columns in PostgreSQL 10+ (#26096)
  • Allowed passing a model instance directly to assertSoftDeleted method in Foundation/Testing/Concerns/InteractsWithDatabase.php (#26133 , #26148)
  • Added possibility to define exclude methods on registered apiResource (#26149)
  • Added filp/whoops to suggest in composer.json (#26180)
  • Added mock and spy methods to Foundation/Testing/Concerns/InteractsWithContainer.php (#26171, b50f9f3)
  • Added uuid validation rule to validator (#26135)
  • NotificationFake can assert preferred locale (#26205)

Fixed

  • Fixed whereHas and $withCount bindings from polymorphic relationships (#26145)
  • Fixed getTable method in Model (#26085)
  • Fixed filesystem locking hangs in PackageManifest::build() (#26010, 98b8256)
  • Fixed Illuminate/Http/Testing/File.php for Symfony 4.1 components (#26080)
  • Fixed URL in Notifications/resources/views/email.blade.php (22ca105)
  • Fixed hasValidSignature method when someone send a null signature in UrlGenerator.php (#26132)
  • Fixed autocomplete for container in ServiceProvider for cases when someone developed packages (#26063)
  • Fixed ColumnDefinition::default typehint (#26041)

Changed

  • Define mix as const in react-stubs/webpack.mix.js and vue-stubs/webpack.mix.js presets (#26119)
  • Make assertSessionHasNoErrors in TestResponse.php print the unexpected errors (#26039, e6bdf8a)
  • Replaced the remaining occurrences of newQuery() to newModelQuery() in UPDATE/DELETE queries. (#26158)
  • Improved findOrFail() exceptions in BelongsToMany.php and HasManyThrough.php relations (#26182)

Changed realization

  • Reversed ternary condition in Arr::wrap to make it clearer (#26150)
  • Simplified formatAction in UrlGenerator.php (#26121)
  • Simplified isChainOfObjects method in Support/Testing/Fakes/QueueFake.php (#26151)
  • Deleted unneeded code (#26053, #26162, #26160, #26159, #26152)
  • Prefer stricter comparison (#26139, #26157)
  • Removed duplicated code from Router::updateGroupStack method (#26206, 6debff6)

v5.7.9 (2018-10-09)

Added

  • Support custom user provider names in generator commands (#25681)
  • Added 401 Exception view (#26002)
  • Added Categorical imperative quote to Inspiring.php (#25968)
  • Mailable render method respects Mailable@locale property (#25990)
  • Added some meta data to the notification mails (477273c)
  • Added Macroable trait to PendingResourceRegistration (#25947)
  • Added assertSessionDoesntHaveErrors method to TestResponse.php (#25949, 3005706)
  • Enable passing options to custom presets (#25930)

Fixed

  • Fix missing illuminate/support dependency in illuminate/container (#25955)
  • Extend grammar (#25944)

Changed

  • Improved PSR-11 implementation (#25870)
  • Changed the sentence of error 403 view from unauthorised to forbidden (#26002)
  • Revert email lang template changes (#25963)
  • Added model checking in assertViewHas (#26012)

Changed realization

  • Inline Arr::pluck() in data_get() (#25938)

v5.7.8 (2018-10-04)

Added

  • Add --step to migrate:fresh command (#25897)
  • Allow destroy method in Model to accept a collection of ids (#25878)
  • Add AsPivot trait (#25851)

Fixed

  • Fixed wrap table for sql server (#25896)

Changed

Changed (only realization)

v5.6.39 (2018-10-04)

Fixed

Changed

Fixed

  • Fix pivot timestamp columns without parent (#25746)
  • Fix "sometimes" validation (#25852)

v5.7.7 (2018-10-02)

Added

Fixed

  • Fix each method on BelongsToMany relationships (#25832)
  • Fix prefixed table indexes (#25867)
  • Fix be method in InteractsWithAuthentication trait (#25873)
  • Fixes the error when $resource is null (#25838)
  • Attach all disk attachments and not only first one in the Mail/Mailable.php (#25793)
  • Fixed: in case if one job throw exception, than we will proceed to next one (#25820)

Changed

Changed (only realization)

  • Simplify save method MorphOneOrMany relation (#25864)

v5.7.6 (2018-09-25)

Added

  • Support MorphTo eager loading with selected columns (#25662)
  • Added possibility to define a complex condition (overwrite shouldAddXsrfTokenCookie method) for add cookie to response in Middleware/VerifyCsrfToken.php

Fixed

  • Fixed tag cache clearing when using Redis (#25744)
  • Fixed broken email subcopy template escaping (#25723)
  • Fixed MethodNotAllowedHTTPException on Intended Redirect (#25739)

Changed

  • Use url() function instead of plain url in views/illustrated-layout.blade.php (25725)

v5.7.5 (2018-09-20)

Added

Fixed

  • Make any column searchable with like in PostgreSQL (#25698)
  • Remove trailing newline from hot url in mix helper (#25699)

Changed

Added

  • Added restored() and forceDeleted() to observer stub (#40ba2ee)
  • Added UploadedFile::getContents() (#24924)
  • Added an alias for a single FactoryBuilder state definition (#24937)

Changed

  • Allow closure to determine if event should be faked (#24887)
  • Update error message for MailFake::assertSent() (#24911)
  • Return instance of spy when swapping facade for a Mockery spy (#24918)
  • Renamed Mailer::setGlobalTo() to setGlobalToAndRemoveCcAndBcc() to be more clear about what it does (#24917)
  • Update the font path used in frontend stub (#24926)

Fixed

  • Fixed an issue when passing an array to Request::is() (#24885)
  • Fixed message string in NotificationFake::assertSentToTimes() (#24929)

Added

  • Added assertSessionHasNoErrors() test helper (#24308)
  • Added support for defining and enforcing a Spatial reference system for a Point column (#24320)
  • Added Builder::whereJsonDoesntContain() and Builder::orWhereJsonDoesntContain() (#24367)
  • Added Queueable, SerializesModels to all notification events (#24368)
  • Allow callable array syntax in route definition (#24385)
  • Added JSON SELECT queries to SQL Server (#24397)

Changed

  • Optimize query builder's pluck() method (#23482)
  • Allow passing object instances regardless of the parameter name to method injection (#24234)
  • Extract setting mutated attribute into method (#24307)
  • Let apiResource support except option (#24319)
  • Skip null/empty values in SeeInOrder (#24395)
  • Sync Original modal attributes after soft deletion (#24400)

Fixed

  • Fixed typo of missing underscore in not_regexp rule name (#24297)
  • Cleanup null relationships in loadMorph (#24322)
  • Fix loadMissing() relationship parsing (#24329)
  • Fix FormRequest class authorization validation priority (#24369)
  • Fix custom blade conditional ignoring 0 as argument (#24394)

Added

  • Added support for renaming indices (#24147)
  • Added Event::fakeFor() method (#24230)
  • Added @canany Blade directive (#24137)
  • Added TestReponse:: assertLocation() method (#24267)

Changed

  • Validation bypass for before and after rules when paired with date_format rule (#24191)

Fixed

  • Fixed an issue with Cache::increment() when expiration is null (#24228)
  • Ignore non-where bindings in nested where constraints (#24000)
  • Fixed withCount() binding problems (#24240)

Added

Changed

  • Support updating NPM dependencies from preset (#24189, a6542b0)
  • Support returning Responsable from middleware (#24201)

Added

  • Added FilesystemManager::forgetDisk() method (#24057, cbfb4fb)
  • Added --allow parameter to down command (#24003)
  • Added more comparison validation rules (gt, lt, gte, lte) (#24091, #24135)
  • Added TestResponse::assertCookieNotExpired() method (#24119)

Changed

  • Redis connections now implement the Contracts/Redis/Connection interface (#24142)

Fixed

  • Fixed unsetting request parameters during HEAD requests (#24092)
  • Fixed HasManyThrough returning incorrect results with chunk() (#24096, 5d3d98a)
  • Fixed dateBasedWhere() with raw expressions when using SQLite (#24102)
  • Fixed whereYear() not accepting integers when using SQLite (#24115)
  • Remove full base URL from generated paths (#24101)

Added

  • Support passing Response and Responsable to abort() (4e29889)
  • Added pingBeforeIf and thenPingIf methods to task scheduler (#24077, 1bf54d2)
  • Added withDefault() support to MorphTo relationships (#24061)

Fixed

  • Fixed URL generator when request has base path (#24074)

Added

  • Added support for custom SparkPost endpoint (#23910)
  • Added Optional::__isset() handling (#24042)
  • Added support for multiple cc, bcc and reply-to recipients on mail notifications (#23760)

Fixed

  • Accept only two arguments on orWhereDate() (#24043)
  • Fixed relative route URL generation when using custom host formatter (#24051)

Added

  • Added support for MySQL 8 (#23948)
  • Added support for custom filesystem drivers URLs (#23964)
  • Added more PostgreSQL operators (#23945)
  • Added support for JSONP callback when broadcasting using Pusher (#24018, b9ab427)

Changed

  • Support chaining using $this->be() helper (#23919)
  • Improved pagination accessibility (#23962)
  • Changed response code of ValidationException in ThrottlesLogins to 429 (#24002)
  • Throw exception if called command doesn't exist (#23942)
  • Made notification email translatable (#23903)

Fixed

  • Fixed saving timestamp columns on pivots without parent (#23917)
  • Quote collation names in MySQL migrations (#23989)
  • Fixed sending plain-text only emails (#23981)
  • Fixed counting the number of jobs on Queue::fake() (#23933)

Added

  • Added helpers for subquery joins (#23818)

Changed

  • Allow PendingResourceRegistration to be fluently registered (#23890)
  • Allow asserting an integer with assertSee*() (#23892)
  • Allow passing Collection to Rule::in() and Rule::notIn() (#23875)

Fixed

  • Lock Carbon version at 1.25.* (27b8844)

Removed

  • Removed form error for password confirmation (#23887)

Added

  • Support executing artisan commands using class names (#23764)
  • Make View macroable (#23787)
  • Added database Connection::unsetEventDispatcher() method (#23832)
  • Support IAM role session token to be used with SES (#23766)

Changed

  • Added displayable value to required_unless rule (#23833)

Fixed

  • Fixed RedisQueue::blockingPop() check when using PhpRedis (#23757)

Fixed

  • Fixed variable reference in RedisTaggedCache::decrement() (#23736)
  • Check updated_at column existence in HasOneOrMany::update() (#23747)

Security

  • Check iv length in Encrypter::validPayload() (886d261)

Changed

  • Only set id on NotificationFake if no id is set (#23474)
  • Removed attribute filling from pivot models (#23554)

Fixed

  • Fixed to not mistakenly release mutex (#23607)
  • Revert breaking changes in ManagesLoops (#23681)

Security

  • Check iv length in Encrypter::validPayload() (28e53f2)

Added

  • Added SlackMessage::info() method (#23711)
  • Added SessionGuard::logoutOtherDevices() method (9c51e49)

Changed

  • Replaced Blade's or operator with null-coalescing operator (13f732e)

Fixed

  • Get Blade compiler from engine resolver (#23710)
  • Default to an empty string when validating the URL signatures (#23721)

Added

  • Added view:cache command (9fd1273, 2ab8acf)
  • Added min() and max() to as higher order proxies (#23560)
  • Added @elseauth and @elseguest Blade directives (#23569)
  • Added support for hashing configuration (#23573, d6e3ca9)
  • Allow tagged cache keys to be incremented/decremented (#23578)
  • Added SeeInOrder constraint to avoid risky test notices (#23594, ca39449)
  • Support higher order groupBy() (#23608)
  • Support disabling setting created_at in models (#23667)
  • Added callback support to optional() helper (#23688)
  • Added Eloquent\Collection::loadMorph() method (#23626)

Changed

  • Support generating a signed route with a UrlRoutable parameter (#23584)
  • Use DIRECTORY_SEPARATOR in Application::environmentFilePath() (#23596)
  • Support states on model factory after callbacks (#23551, #23676)
  • Use hash_equals() for verifying URL signatures (#23618)
  • Refactored Exceptions/Handler (f9162c9, 6c5d971)
  • Changed status code of InvalidSignatureException from 401 to 403 (#23662, c99911f)

Fixed

  • Revered breaking changes in ManagesLoops (d0a2613)
  • Set exit status in serve command (#23689)

Added

  • Added fromSub() and fromRaw() methods to query builder (#23476)
  • Added "Not Regex" validation rule (#23475)
  • Added seed parameter to Arr::shuffle() (#23490)
  • Added after callback to model factories (#23495, d79509d)
  • Added Request::anyFilled() method (#23499, 896d817)
  • Added support for signed routes (#23519)
  • Added assertNotFound() and assertForbidden() methods to TestResponse (#23526)
  • Added test helpers to assert that a job has been queued with a chain (#23531, 696f4d8)

Changed

  • Only set id on NotificationFake if there is no id set (#23470)
  • Check whether fetch() method exists in Application::output() (#23471)
  • Improve asset loading in app.stub (#23479)
  • Support ignoring a model during a unique validation check (#23524)
  • Support multiple model observers (#23507)
  • LogManager driver capable of producing logger with any Monolog handler (#23527, d499617)
  • Support passing model instance to updateExistingPivot() (#23535)
  • Allow for custom TokenGuard fields (#23542)

Fixed

  • Fixed clearing the cache without a cache directory (#23538)

Fixed

  • Fix for Carbon 1.24.1 (#23464)

Added

  • Added Blueprint::dropMorphs() (#23431)
  • Added Mailable::attachFromStorage() methods (0fa361d)
  • Added orWhere*() builder methods for day, month and year (#23449)

Changed

  • Added v-pre to dropdown link in app.stub (98fdbb0)
  • Handle more JSON errors gracefully when JSON_PARTIAL_OUTPUT_ON_ERROR is set (#23410, 972b82a)
  • Add bubble, permission and locking config to single/daily log (#23439)
  • Use Str::contains() instead of str_contains() (ae4cb28)

Fixed

  • Fixed unique() call in Validator::validate() (#23432)
  • Fix for Carbon 1.24.0 (67d8a4b)

Fixed

Fixed

  • Fix for Carbon 1.24.0 (#23459)
  • Fixed --force flag on GeneratorCommand (#23427)

Changed

  • Regenerate token when regenerating the session (20e8419)

Fixed

  • Fixed an issue with resources when loading a single merge value with an associative array (#23414)

Changed

  • Added v-pre to dropdown link in app.stub (987c19f)

Fixed

  • Queue::bulk() fake now properly pushes expected jobs (#23389)
  • Set up loop variable correctly on all Traversable objects (#23388)
  • Fixed SQLiteGrammar::whereTime() formatting (#23408)

Added

  • Added support for MySQL’s sounds-like operator (#23351)
  • Added ThrottleRequestsException exception (#23358
  • Added @dump Blade directive (#23364)
  • Added Collection::whereInstanceOfMethod() (78b5b92)
  • Added Dispatchable::dispatchNow() (#23399)

Changed

  • Allow extension of DatabaseNotification model attributes (#23337)
  • Made auth scaffolding translatable (#23342)
  • Use getKeyName() in getForeignKey() (#23362)
  • Sort FileSystem files and directories by name (#23387)
  • Return validated data from Validator::validate() (#23397, 3657d66)

Fixed

  • Fixed serve command escaping (#23348)
  • Fixed an issue with multiple select statements in combination with withCount() (#23357)
  • Fixed conditional loading issues (#23369)
  • Prevent considering arrays as callable while building model factories (#23372)
  • Move tightenco/collect to Composer’s conflict (#23379)
  • Set up loop variable correctly on all Traversable objects (#23388, 49770ec)
  • Removed attribute filling from pivot model (#23401)

Changed

  • Upgrade Parsedown to 1.7.0 (14adb99)

Fixed

  • Fixed PostgresGrammar::whereTime() casting (#23318)

Added

  • Added SFTP filesystem driver (#23308)

Changed

  • Pass parent model to withDefault() callback (#23334)
  • Upgrade Parsedown to 1.7.0 (816f893)

Fixed

  • Fixed PostgresGrammar::whereTime() casting (#23323)
  • Fixed SQLiteGrammar::whereTime() correct (#23321)

Added

  • Added sortKeys() and sortKeysDesc() methods to Collection (#23286)

Changed

  • Return null from optional() helper if object property is undefined (#23267)
  • Cache event wildcard listeners (#23299, 82099cb)
  • Changed morphs() and nullableMorphs() to use unsignedBigInteger() (#23320)

Fixed

  • Prevent delayed jobs in v5.5 fail to run in v5.6 (#23287)
  • Queue::bulk() fake now properly pushes expected jobs (#23294)
  • Fixed the list of packages removed when the "none" preset is installed (#23305)
  • Fixed an issue with orHaving() arguments (e7f13be)

Added

  • Added model reference to MassAssignmentException (#23229)
  • Added support for setting the locale on Mailable (#23178, a432d9e)
  • Added new udiff methods to the Collection (#23107)

Fixed

Fixed

  • Fixed an issue with orWhere*() arguments (3368494)
  • Fixed tightenco/collect version (#23152, #23159)

Added

  • Added the ability to set message ID right hand side (#23181)
  • Support callbacks as custom log drivers (#23184)
  • Added Blade::include() method for include aliases (#23172)
  • Added broadcastType() method to notifications (#23236, 4227bd7)

Changed

  • Moved clone logic from FormRequestServiceProvider to Request (b0c2459)
  • Changed pagination arrow symbols (#23127)
  • Update React version in preset (#23134)
  • Added an empty error bag when rendering HTTP exception views (#23139)
  • Normalized actions when using route:list command (#23148)
  • Updated required Carbon version (201bbec)
  • Improved BadMethodCallException messages (#23232)
  • Support date validation rules when comparison has relative time (#23211)

Fixed

  • Returns same Logger instance from LogManager (#23118)
  • Register missing hash.driver DI (#23114)
  • Fixed an issue with starting two database transactions in tests (#23132)
  • Don't replace tightenco/collect (#23147, #23153, #23160)
  • Catch InvalidFileException when loading invalid environment file (#23149, 5695079)
  • Fixed an issue with assertRedirect() (#23176)
  • Fixed dropdown accessibility (#23191)
  • Fixed --force flag on GeneratorCommand (#23230)

Removed

Fixed

  • Fixed an issue in TestResponse::assertSessionHasErrors() (#23093)
  • Update Vue and React presets to Bootstrap v4 (8a9c5c4)

Changed

  • Support customization of schedule mutex cache store (20e2919)

Fixed

  • Reverted changes to TestResponse::assertSessionHasErrors() #23055 (0362a90)

Added

  • Added Slack attachment pretext attribute (#23075)

Changed

  • Added missing nested joins in Grammar::compileJoins() (#23059)
  • Improved session errors assertions in TestResponse::assertSessionHasErrors() (#23055)

Fixed

  • Fixed BelongsToMany pivot relation wakeup (#23081)

Removed

  • Removed monolog configurator (#23078)

General

Artisan Console

  • ⚠️ Removed deprecated optimize command (#20851)
  • Show job id in queue:work output (#21204)
  • Show batch number in migrate:status output (#21391)
  • ⚠️ Added $outputBuffer argument to call() method in contracts (#22463)
  • Added --realpath argument to migration commands (#22852, 98842da)
  • Added --api argument to make:controller (#22996, dcc6123)

Authentication

  • Support customizing the mail message building in ResetPassword::toMail() (6535186)
  • Added AuthServiceProvider::policies() method (6d8e530)

Blade Templates

  • Added @csrf and @method directives (5f19844, #22912)
  • Added Blade::component() method for component aliases (#22796, 7c3ba0e)
  • ⚠️ Made double encoding the default (7c82ff4)

Broadcasting

Cache

  • Removed $decayMinutes argument from RateLimiter::tooManyAttempts() (#22202)

Collections

  • ⚠️ Fixed keyless calls to uniqueStrict() (#21854)
  • Added operator support to Collection@partition() (#22380)
  • Improve performance of Collection::mapToDictionary() (#22774, c09a0fd)
  • Accept array of keys on Collection::except() (#22814)

Database

  • ⚠️ Swap the index order of morph type and id (#21693)
  • Added support for PostgreSQL comments (#21855, #22453)
  • Better enumeration columns support (#22109, 9a3d71d)
  • Prevent duplicated table prefix in SQLiteGrammar::compileColumnListing() (#22340, #22781)
  • Support complex update() calls when using SQLite (#22366)
  • Throws an exception if multiple calls to the underlying SQLite method aren't supported (#22364, c877cb0)
  • Made whereTime() operator argument optional (#22378)
  • Changed transaction logic in DatabaseQueue (#22433)
  • Added support for row values in where conditions (#22446)
  • Fixed serialization of pivot models (#22786, 8fad785, 351e3b7)
  • ⚠️ Accept Throwable in DetectsLostConnections (#22948)

Eloquent

  • ⚠️ Serialize relationships (#21229)
  • Allow setting custom owner key on polymorphic relationships (#21310)
  • ⚠️ Sync model after refresh() (#21905)
  • Make MassAssignmentException wording clear (#22565)
  • Changed HasAttributes::getDateFormat() visibility to public (#22618)
  • Added BelongsToMany::getPivotClass() method (641d087)
  • Ensure Pivot model's $dateFormat is used when creating a pivot record (a433ff8)
  • Added BelongsToMany::withPivotValues() method (#22867)
  • Added forceDeleted event (497a907)
  • ⚠️ Relocate the existence check for factory definitions to FactoryBuilder::getRawAttributes() (#22936)
  • ⚠️ Change Resource name away from soft-reserved name (#22969, aad6089)
  • Added support for casting to custom date formats (#22989, 1f902c8)

Hashing

Helpers

  • ⚠️ Return an empty array from Arr::wrap() when called with null (#21745)
  • Return class traits in use order from class_uses_recursive() (#22537)
  • Added Str::uuid() and Str::orderedUuid() (3d39604)

Logging

Mail

  • ⚠️ Added $data property to mail events (#21804)
  • ⚠️ Call message сustomization callbacks before building content/attachments (#22995)
  • Added support for setting HTML in emails (#22809)

Notifications

  • Pass notification instance to routeNotificationFor*() methods (#22289)

Queues

  • ⚠️ Added payload() and getJobId() to Job contract (#21303)
  • Removed unused Worker::raiseFailedJobEvent() method (#21901)
  • Support blocking pop from Redis queues (#22284, dbad055, 5923416)

Requests

  • ⚠️ Return false from expectsJson() when requested content type isn't explicit (#22506, 3624d27)
  • Added Request::getSession() method (e546a5b)
  • Accept array of keys on Request::hasAny() (#22952)

Responses

  • Added missing $raw and $sameSite parameters to Cookie\Factory methods (#21553)
  • ⚠️ Return 201 status if Model was recently created (#21625)
  • Set original response JSON responses (#22455)
  • Added streamDownload() method (#22777)
  • ⚠️ Allow insecure cookies when session.secure is true (#22812)

Routing

  • Added SetCacheHeaders middleware (#22389, f6f386b, df06357)
  • Support pulling rate limit from the user instance in ThrottleRequests (c9e6100)

Service Container

  • Support bulk binding in service providers during registration (#21961, 81e29b1)

Session

  • Support dot notation in Session::exists() (#22935)

Support

  • ⚠️ Throw exception if Manager::driver() is called with null (#22018)
  • ⚠️ Added hasCommandHandler(), getCommandHandler() and map() to Bus\Dispatcher contract (#22958, #22986)
  • Added useBootstrapThree() helper to paginators (c919402)

Task Scheduling

Testing

  • ⚠️ Switched to PHPUnit 7 (#23005)
  • Support fetching specific key when using json helpers (#22489)
  • Use DatabaseTransactions trait in RefreshDatabase (#22596)
  • Added assertSeeInOrder() and assertSeeTextInOrder() methods (#22915, #23038)

Validation

  • ⚠️ Ignore SVGs in validateDimensions() (#21390)
  • ⚠️ Renamed validate() to validateResolved() (33d8642)

Changed

  • Use path helpers in console commands (#22971)
  • Remove unnecessary escapeshellarg() call (#23025)
  • Use original attribute values in pivot where clauses (#23031, #23035)

Added

  • Added doesntExist() method to query builder (#22836, 9d2a7ca)
  • Added assertHeaderMissing() assertion (#22849, #22866)
  • Added support for higher order unique (#22851)
  • Added boolean toggle to withTrashed() (#22888)

Changed

  • Support Mix HMR with different host/port (#22826, 24897d6)
  • Make route filtering by method case-insensitive (#22856)
  • Added missing PostgreSQL operator for array overlap (#22903)

Fixed

Fixed

Changed

  • Accept collection of keys on Collection::only() (#22804)

Fixed

Added

  • Added Model::qualifyColumn() method (#22577)
  • Added support for the author_* fields to SlackAttachment (#22610)
  • Added UrlGenerator::getDefaultParameters() method (#22572)
  • Added option to double encode escaped strings (61f8477)
  • Added BladeCompiler::doubleEncode() method (1cc96a1)
  • Added support for nested keys to TestResponse::assertJsonCount() (#22740)
  • Added s3:// to protocol to URL validation (#22752)
  • Added option to disable wrapping migrations in transaction (#22757)

Changed

  • Use Arr::get() in Collection::get() (#22554)
  • Pass entire config to FtpAdapter (#22539)
  • Support extending Eloquent relationships (#22617)
  • Improved handling of VerifyCsrfToken::$except values (#22619, #22661)
  • Support multiple levels in Collection::groupBy() (#22630)
  • Clear user instance in RequestGuard::setRequest() (#22649)
  • Allow StudlyCase and snake_case migration names (#22648)
  • Set null as default value for optional() helper (#22699)
  • Make sure getRememberToken() returns a string (#22724)
  • Updated Vue preset version (#22732)
  • Accept Arrayable items in Collection::find() (#22787)

Fixed

  • Close database connection when using RefreshDatabase trait (#22569)
  • Send status code 500 when using dd() (#22581)
  • Fixed parameter usage in RedirectController (#22657)
  • Added __set_state() method to Support/Carbon (#22689)
  • Do not continue checking APP_ENV if environment file path being set successfully with --env option (#22753)
  • Fixed missing table prefix in SQLiteGrammar::compileDropColumn() (#22745, c13322c)
  • Fixed prefixing in SQLiteGrammar::compileColumnListing() (#22781)

Added

  • Added AnonymousNotifiable::notifyNow() method (#22530)
  • Added EventFake::assertDispatchedTimes() method (#22528)

Changed

  • Check for --no-interaction flag on command calls (#22515, ba5e31d)

Fixed

  • Fix Validator not handling properly inline messages for size rules (#22518, 690d9fc)

Added

  • Allow HtmlString as line in MailMessage (#22473)
  • Allow chaining of the Request::merge() calls (#22479)

Changed

  • Reverted performance improvements of Model::getTable() (#22478)

Added

  • Support passing collections to Collection::except() (#22399)
  • Made Command class macroable (#22426, #22434)
  • Added ProcessUtils class for command argument escaping (#22448)
  • Added array support to Optional helper class (#22417)

Changed

  • Added "cattle" as an uncountable word (#22415)
  • Added Dispatcher contract on NotificationFake and return fake object from Notification::fake() (#22396)
  • Only add value as query binding if it isn't an Expression (#22451)

Fixed

  • Fixed database queue transactions wrapped in closures (#22394)
  • Fixed an issue with multiple dont-discover packages (#22443)
  • Fixed incorrect description type in Console/Parser (#22449)

Added

  • Added support for Flysystem caching (#22310, 0657496)
  • Added support for year data type (#22377)
  • Added support for setting Whoops debug editor (#22350, c6e3a73)

Changed

  • Use Model::newQueryWithoutRelationships() in Collection::load() (#22363)
  • Respect schema config in PostgresBuilder (#22365, de561cb)

Fixed

  • Fixed SQS queue driver for PHP 7.2 (#22374)

Added

Changed

  • Made Relation::$morphMap public (e44596f)
  • Trim return value of ValidatesAttributes::shouldBlockPhpUpload() (90a8faf)

Fixed

  • Fixed an issue with queueable notifications (#22275)
  • Fixed NullSessionDriver upstream issues (#22314)
  • Move payload to the end of the insert array of a job (#22334)

Added

Changed

  • Pass test value to Collection::when() callbacks (#22224)
  • Support worker sleep time of less than 1s (#22246, #22255)
  • Detect persistent connection resets (#22277)
  • Support chaining seeders (#22288)

Fixed

  • Fixed negative comparison to objects in Collection::where() (#22256)
  • Fixed comparing strings with objects that can be casted to string in Collection::where() (#22295)
  • Fixed integer validation using distinct:ignore_case (#22235)
  • Fixes building nested JSON accessors in MySqlGrammar (#22254)
  • Remove SELECT bindings from MySQL delete statements (#22285)

Added

  • Added response() and download() methods to file system (#22089)
  • Added complete temporary table support (#22110)
  • Added Mode::newQueryForRestoration() method (#22119)
  • Added precision support for date/time columns (#22122)
  • Added detection for MySQL Galera deadlocks (#22214)

Changed

  • Updated depreciated MailFake::queue() method signature (#22072)
  • Use MEDIUMTEXT instead of TEXT for database cache values (MySQL only) (#22091)
  • Include the name of the scheduled job in the output email subject (#22098)
  • Support Dblib version config for SQL Server (#22102)
  • Set Model::$exists to false when force-deleting a model using SoftDeletes (#22100)
  • Support empty strings in HasAttributes::fromDateTime() (#22108)
  • Return condition from throw_* helpers (#22149)
  • Make Collection::where() independent of error reporting (#22172)
  • Show more meaningful message when json translation file contains errors (#22165, cf29b88)
  • Improve Model::getTable() performance (#22222)
  • Use transaction in migrations using SQL Server (#22187)

Fixed

  • Fixed HasManyThrough relation with custom intermediate and local keys when used in whereHas() (#22071, 3788cbd)
  • Fixed SQL Server handling of DATETIME columns (#22052)
  • Return default value from old() when session isn't available (#22082)
  • Refactor Arr::flatten() to prevent performance issue (#22103)
  • Wrap MySQL JSON keys in double quotes when updating JSON columns (#22118)
  • Fixed custom URLs with prefix (root) for AWS storage (#22130)
  • Prevent authentication if password is the only specified field (#22167)

Removed

  • Removed between operator from basic where clauses (#22182)

Added

  • Add support for MultiSubnetFailover parameter to SqlServer (#22022)
  • Support custom URLs for S3 (#22037)
  • Added MakesHttpRequests::withMiddleware() method (#22060)

Changed

  • Display controller name in BadMethodCallException (#22005)
  • Unify Collection::dd() and Collection::dump() output (#22036)
  • Support event generation from multiple service providers (#22063)

Added

  • Added TestResponse::assertJsonMissingExact() (#21881)
  • Added assertValidationErrors() and assertJsonCount() to TestResponse (#21917)
  • Added allOnQueue() and allOnConnection() for job chaining (#21765)
  • Support variadic arguments on fluent Route::middleware() (#21930)
  • Added precision to Blueprint::time() (#21936)
  • Added Router::apiResources() method (#21956)
  • Support graceful handling of SIGTERM in queue workers (#21964)

Changed

  • Added "kin" as an uncountable word (#21843)
  • Improved geo spatial support (#21919)
  • Include job name in the MaxAttemptsExcededException (#21941, #21943)
  • Support rendering multiple @verbatim and @php blocks (#21900)
  • Moved InteractsWithRedis to Illuminate\Foundation\Testing (#21967)
  • Don't bind macro when it is not a Closure (#21980)
  • Check for before() method on policies classes (#21989)
  • Detect lost pgbouncer connections (#21988)

Fixed

  • Fixed BroadcastController namespace issue (#21844)
  • Fixed eager loading HasManyThrough relations with custom intermediate and local key (#21902)
  • Use table aliases when calling self-referencing HasManyThrough relation (#21883)
  • Fixed Vue component file name in React present (#21945)
  • Reverted changes to BadMethodException in #20196 (#21929)

Added

  • Added MakesHttpRequests::followingRedirects() method (#21771)
  • Added MakesHttpRequests::from() method (#21788)
  • Added notifyNow() method to notifiables (#21795)
  • Added TestResponse::assertCookieExpired() method (#21793)
  • Added TestResponse::assertCookieMissing() method (#21803)

Changed

  • Allow the distinct validation rule to optionally ignore case (#21757)

Fixed

  • Excluding spatial_ref_sys table from migrate:fresh (#21778)
  • Fixed issue with SessionGuard setting the logged in user after firing the Authenticated event (#21790)
  • Fixed issue with Model::refresh() when model has a global scope (#21815)
  • Fixed scheduling a non-queuable job (#21820)

Added

  • Made Redirector macroable (#21714)

Changed

  • Prevent reloading default relationships while lazy eager-loading (#21710)
  • Don't reload pivot relationship on refresh (#21713)
  • Unify Vue.js preset (#21711, #21724)
  • Revert multibyte functions in Str (#21722)
  • Remove hardcoded fields in DatabaseUserProvider (#21749)

Fixed

  • Don't recreate the SQLite database file in refreshDatabaseFile() (#21720)

Fixed

  • Allow @json options to be 0 (#21692)
  • Fixed "invalid argument" error in ServiceProvider::loadViewsFrom() (#21705)

No changes.

Added

  • Added missing PostgreSQL network address operators (#21518)
  • Added raw and same-site parameters to cookie() helper (#21551)
  • Added option to create pivot model to make:model command (#21549)
  • Added support for a failed() method to mailables and notifications (#21585)
  • Added __toString on ViewErrorBag (#21605)
  • Support higher order call of keyBy() (#21606)
  • Generate @else* directives for Blade::if() (#21611)
  • Made Response and JsonResponse macroable (#21669)

Changed

  • Escape HTML characters in @json directive (#21574)
  • Only accept strings in Session::flash() (#21576)
  • Use message from AuthenticationException in Handler::unauthenticated() (#21575)
  • Don't use global scope while touching parent timestamp (#21604)
  • Accept multiple middleware when defining middleware fluently (#21621)
  • Bind true as 1 while preparing an SQL statement (#21623)
  • Ensure config load order across multiple installations (#21634)
  • Pass previous exception to AccessDeniedHttpException and HttpException (#21645)
  • Unify Bootstrap preset (#21686, #21685)

Fixed

  • Reset table cell margins in mail theme (#21647)
  • Check for vendor views for each paths given in config/view.php (#21636)
  • Prevent negative offsets when paginating collection (#21658)
  • Flush all listeners of custom Eloquent events (#21688)

Added

  • Allow testing anonymous notifiables (#21379)
  • Add relation and model attributes on RelationNotFoundException (#21426)
  • Allow passing a callback to with() (#21445)
  • Added PotentiallyMissing interface to MissingValue class (be7dccc)
  • Accept $queue name on Schedule::job() (#21473)
  • Added callback and default parameter whenLoaded() method (#21490)
  • Allow marking notifications as unread (#21497)
  • Added Collection::mapToDictionary() method (#21505)
  • Added make:exception command (#21483)

Changed

  • Reset RefreshDatabaseState after DatabaseMigrations rolls back (#21325)
  • Make sure page resolver returns an integer (#21378)
  • Allow single error messages in ValidationException::withMessages() (#21400)
  • Revert Collection::sortBy() behaviour to 5.4 (#21382)
  • Use fill instead of forceFill while storing pivot attributes (#21403)
  • Alphabetize vendor:publish options (#21412)
  • Extract AnonymousResourceCollection into class to allow serialization (#21456)
  • Extract some methods from Resource into ConditionallyLoadsAttributes trait (28d945e, 1f37ccc)

Fixed

  • Ensure user is logged in before expecting user instance (#21377)
  • Remove leading slash from class while resolving controllers (#21407)
  • Make sure SQL for virtual columns is added after the unsigned modifier (#21441)
  • Fixed Collection::contains() when the found value is null (#21442)
  • Fixed merge issue in Relation::morphMap() (#21458)
  • Clear count query select bindings in Relation::getRelationExistenceCountQuery() (#21468)
  • Fixed user model type hints policy stub (#21499)

Added

  • Added optional config option for whoops blacklist (#21336, a83ebc1)
  • Added Collection::pad() method (#21342)

Changed

  • Made $callback parameter of Arr::sort() optional (#21337)
  • Support setting custom REMOTE_ADDR in MakesHttpRequests (#21351)
  • Changed visibility of $output to public on console events (#21356)

Fixed

  • Don't compare remember token in user providers if it's null (srsly for real this time, pinky promise) (#21328, #21368)

Added

  • Added "software" as an uncountable word (#21324)

Fixed

  • Don't compare remember token if it's null (#21328)

Fixed

  • Fixed bug in EloquentUserProvider introduced in #21320 (#21323)

Added

  • Added Route::respondWithRoute($name) method (#21299, 66c5e46)
  • Added $strict parameter to TestResponse::assertJson() (#21301)

Changed

  • Added "firmware" as an uncountable word (#21306)
  • Allow MorphTo::associate() accept null (#21318)
  • Changed __() signature to match Translation::trans() (10c013c)

Fixed

  • Add missing driver parameter to doctrine connection (#21297)

Security

  • Perform constant-time token comparison in DatabaseUserProvider (#21320)

Changed

  • Perform stable sort in Collection::sortBy() (2nd attempt) (#21270)
  • Return empty string if database session key is expired (#21277)

Fixed

  • Fixed setting Model::UPDATED_AT in SoftDeletes (#21286)
  • Apply custom pivot model attribute casting on arrays (#21275)

Fixed

Fixed

  • Fix CacheClearCommand binding (#21256)

Changed

  • Clear real-time facades when running cache:clear (#21250, 1856601)

Fixed

  • Reverted stable sort support in Collection::sortBy() (#21255)

Added

  • Added :input placeholder in validation error messages (#21175)
  • Added @includeFirst Blade directive (#21172)
  • Allow setting column styles for tables in Artisan commands (#21169)
  • Added ValidatesRequests::extractInputFromRules() method (#21192)
  • Added -m shortcut to make:factory (#21219)
  • Added ability to set a fallback (catch-all) route (#21234)

Changed

  • Support null on Model::UPDATED_AT (#21178)
  • Render views from config while building error views (#21145)
  • Use multibyte functions in some Str methods (#21207)
  • Perform stable sort in Collection::sortBy() (#21214)

Fixed

  • Ignore SELECT bindings in prepareBindingsForUpdate() (#21173)
  • Fixed remember check in AuthenticatesUsers::attemptLogin() (#21221)
  • Added "hardware" as an uncountable word (#21236)

Added

  • Added Blueprint::spatialIndex() method (#21070)
  • Added support for SQL Server's TransactionIsolation DSN key (#21069)
  • Added ManagesFrequencies::everyFifteenMinutes() method (#21092)
  • Added Mailable::hasReplyTo() method (#21093)
  • Added MailMessage::template() method (#21154)
  • Added support for Rackspace to Storage::url() (#21157)
  • Added support to use sub-queries as a where condition on a join clause (#21008)

Changed

  • Return null from Route::getAction() if $key is not found (#21083)
  • Restore non-static signature of Router::prepareResponse() (#21114, e1a1265)
  • Removed Model type hint from Model::isNot() (4d8f0a1)
  • Prefer Jsonable over Arrayable in JsonResponse::setData() (#21136)
  • Reset cc and bcc in Mailer::setGlobalTo() (#21137)
  • Avoid trace args in JSON exceptions (#21149)

Fixed

  • Fixed @json directive parameter logic (2a25ee7)
  • Fixed a problem with withoutExceptionHandling() when called more than once (#21086)
  • Added a compileForeign() method to PostgresGrammar (#21038)
  • Reset the index after a MissingValue while resolving resource (#21127)
  • Fixed getQualifiedParentKey() on BelongsToMany relationships (#21128)
  • Fixed parameters on Route::view() when using where() (#21113)
  • Show real directory name in the exception message thrown by PackageManifest (#21099)
  • Fixed undefined offset error when refreshing a database collection (#21159)

Added

  • Added $action parameter to Route::getAction() for simpler access (#20975)
  • Added @json blade directive (#21004)
  • Added rescue() helper (#21010, 74ecb34, c4d1c47)
  • Support commas in In and NotIn parameters (#21012, 3c3c5e4)
  • Added RedisManager::connections() method (#21014, 1deaaa9)
  • Added exception class to JSON exceptions (#21043)
  • Added Gate::policies() method (#21036)
  • Added geo spatial blueprint methods (#21056)

Changed

  • Fixed migrations not being run in batch order (#20986)
  • Flush application resources on teardown (#21022)
  • Catch errors while building exception context (#21047)
  • Return $this from Validator::setCustomMessages() (#21046)

Fixed

  • Make Request::validate() return the value of parent key (#20974)
  • Fixed date comparison validators failing when a format is specified (#20940)
  • Fixed login throttling failing when decayMinutes is more than 1 (#20997)
  • Only use reflection on classes in Kernel::load() (#20998)
  • Specify lower case column_name in MySqlGrammar::compileColumnListing() (#21037)
  • Fixed eager loading problem with BelongsToMany (#21044)

Removed

  • Remove unnecessary lcfirst() call in authorizeResource() (#21017)
  • Removed $listensFor from listener stubs (#21039)

Added

  • Added mov extension and MimeType::search() method (#20917)
  • Added support for dont-discover in packages (#20921, 4a6f1f2)
  • Added retrieved model event (#20852, 84291a6)
  • Added HasOneOrMany::setForeignAttributesForCreate() method (#20871)
  • Made Route macroable (#20970)

Changed

  • Load deferred providers before commands (366c50e)
  • Don't pass cache instance to Schedule anymore (#20916, #20933)
  • Simplified mix require (#20929)
  • Return null if resource attribute contains relation with a null value (#20969)

Fixed

  • Prevent ErrorException in Collection::operatorForWhere() method (#20913)
  • Create default console input/output in Application::run() (#20922, 7647399)
  • Ignore abstract classes in Kernel::load() (#20931)
  • Fixed listener-queued-duck.stub filename (#20937)
  • Fixed faking notification sending while using AnonymousNotifiable (#20965)
  • Fixed eachSpread() and mapSpread() with nested collections (#20962)
  • Fixed generating names for classes beginning with slash (#20961)

Added

  • Added getter methods on MimeType (#20826)

Changed

  • Moved console commands auto discovery to Kernel::bootstrap() (#20863)
  • Use classes instead of helper functions (#20879, #20880)
  • Changed Resource::$collects visibility to public (#20885)

Fixed

  • Fixed choice() on non-tty terminals (#20840)
  • Fixed Macroable calls on Optional (#20845, #20898)
  • Fixed dropAllTables() when using PDO::FETCH_ASSOC mode (#20859)
  • Pass model name to ModelNotFoundException::setModel() (#20896, 891f90e)
  • Fixed Basic authentication (#20905)
  • Fixed DelegatesToResource::offsetExists() (#20887)

Removed

  • Removed redundant methods from MorphOneOrMany (#20837)

General

  • ⚠️ Require PHP 7+ (06907a0, 39809ce)
  • ⚠️ Removed deprecated ServiceProvider::compile() method (10da428)
  • ⚠️ Removed deprecated Str::quickRandom() method (2ef257a)
  • Removed build scripts (7c16b15)
  • Upgraded to Symfony 3.3 components (4db7031, 67a5367)
  • Throw RuntimeException when app key is missing (#19145, 8adbaa7)

Artisan Console

  • Added interactive prompt to vendor:publish (#18230)
  • Added migrate:fresh command (f6511d4, #20090)
  • Added make:factory command and added --factory to make:model (a6ffd8b, #19985)
  • Added make:rule command (76853fd)
  • ⚠️ Added runningInConsole() method Application contract (#18658)
  • Support default value(s) on command arguments (#18572)
  • Improved CLI detection for phpdbg (#18781)
  • ⚠️ Always return array from RetryCommand::getJobIds() (#19232)
  • Support passing absolute paths to make::listener (#19660)
  • ⚠️ Use handle() method instead of fire() (#19827, #19839, #20024)
  • Try to guess the --create option when generation migrations (#20032)
  • Generate make:policy with real user model namespace (#20047)
  • Added Kernel::load() to auto register a directory of commands (2e7ddca, d607b9c)
  • ⚠️ Removed array type hint from Command::table() (#20120)
  • Support loading multiple paths in Kernel::load() (#20251, #20595)
  • Added CommandStarting and CommandFinished events (#20298)
  • Show error message if a reverted migration is not found (#20499, a895b1e)
  • Set correct namespace in model factories when using the app:name command (#20766)
  • ⚠️ Switched the -f shortcut from --force to --factory on make:model command (#20800)

Assets

  • Added frontend preset commands (463b769, too many follow-up commits)

Authentication

  • ⚠️ Support default user providers and pass user provider to RequestGuard (#18856)
  • Made the user provider parameter on RequestGuard optional (d7f0b26)
  • Use setRememberToken() in ResetsPasswords (#19189)
  • Added a PasswordReset event (#19188)
  • ⚠️ Support multiword models in authorizeResource() (#19821)
  • Added support for no user provider in CreatesUserProviders (4feb847)

Authorization

  • Support multiple values in Gate::has() (#18758)
  • ⚠️ Prevent policies from being too greedy (#19120)
  • ⚠️ Added abilities() method to Gate contract (#19173)
  • ⚠️ Implement iterable on Gate::check() and Gate::any() (#20084)

Blade Templates

  • Added Blade::if() method (71dfe0f, 2905364, #20025)
  • Added @switch, @case, @break and @default directives (#19758)
  • ⚠️ Prevent Blade from parsing PHP code inside @php blocks (#20065)

Broadcasting

  • ⚠️ Use AccessDeniedHttpException instead if HttpException (#19611)
  • ⚠️ Upgraded to Pusher SDK v3 (#20016)

Cache

  • ⚠️ PSR-16 compliance (#20194)
  • Don't encrypt database cache values (f0c72ec)
  • Added support cache locks (4e6b2e4, 045e6f2, #19669)
  • Accept DatetimeInterface and DateInterval in cache repository (#20034)
  • Added getStore() method to cache Repository interface (#20338)
  • ⚠️ Made RateLimiter less aggressive (#20759)

Collections

  • Support multiple values in Collection::has() (#18758)
  • Added Collection::mapInto() method (2642ac7)
  • Added Collection::dd() method (f5fafad)
  • Added Collection::dump() method (#19755)
  • Added wrap() and unwrap() methods (#20055, #20068)
  • Added keys to partition(), eachSpread() and mapSpread callback (#20783, #20723)

Configuration

  • Added Config::getMany() method (#19770)

Controllers

  • ⚠️ Added ControllerDispatcher (#20031)
  • ⚠️ Removed Controller::missingMethod() (bf5d221)

Database

Eloquent ORM

  • Added API resources (#20710, too many follow-up commits)
  • ⚠️ Indicate soft deleted models as existing (#17613)
  • ⚠️ Added $localKey parameter to HasRelationships::belongsToMany() and BelongsToMany (#17903, 7c7c3bc)
  • ⚠️ Added $parentKey parameter to belongsToMany(), BelongsToMany and MorphToMany (#17915, #18380)
  • ⚠️ Renamed $parent property to $pivotParent in Pivot class (#17933, #18150)
  • ⚠️ Don't add _count suffix to column name when using withCount() with an alias (#17871)
  • ⚠️ Renamed $events to $dispatchesEvents (#17961, b6472bf, 3dbe12f)
  • ⚠️ Only return query builder when the result is null for callScope() (#18845)
  • Allow setting a factory's attribute to a factory instance (#18879)
  • Support null comparison in Model::is() (#18511)
  • Added getDirty() checks for date and castable attributes (#18400, e180e20)
  • Show method name in invalid relationship LogicException (#18749)
  • Add support for additional values in firstOrCreate() and firstOrNew() (#18878)
  • Added a second local key to HasManyThrough (#19114)
  • Respect casts declaration on custom pivot models (#19335)
  • Support creating relations without attributes (#19506)
  • Added Model::only() method (#19459)
  • ⚠️ Support model serialization on non default connection (#19521, dd45f70)
  • ⚠️ Support updating nullable dates (#19672)
  • ⚠️ Make pivot model instantiable (#20179)
  • Simplified BelongsToMany::allRelatedIds() logic (#20189)
  • Added Relation::get() method (#20052)
  • Added hasChanges(), wasChanged(), getChanges() and syncChanges() (#20129, #20130)
  • Better exception message when calling non existing methods on models (#20196, 91c1f03)
  • Added support for connections on model factories (#20191)
  • Check for real primary key in Pivot methods (8d82618)
  • Default $attributes on BelongsToMany::create() to empty array (973bff4)
  • Add ability to set a custom pivot accessor (#20411)
  • ⚠️ Call setConnection() in Model::save() (#20466)
  • ⚠️ Touch parent timestamp only if the model is dirty (#20489)
  • Added Model::loadMissing() method (#20630, 4166c12)
  • Added Model::whereKeyNot() method (#20817)

Encryption

  • Use openssl_cipher_iv_length() in Encrypter (#18684)
  • Added Encrypter::generateKey() method (6623996)
  • Use json_last_error() in Encrypter (#20099)

Errors & Logging

  • Added default 404, 419 and 500 error pages (#18483, 4d8c2c1)
  • ⚠️ Always show custom 500 error page for all exception types when not in debug mode (#18481, 3cb7b0f)
  • ⚠️ Show 419 error page on TokenMismatchException (#18728)
  • Support render() method on exceptions (ed51160, c8a9413)
  • Support report() method on exceptions (e77f6f7)
  • ⚠️ Send exceptions as JSON in debug mode if the request wants JSON (5225389, #18732, 4fe6091, 9ab58fd, #19333)
  • ⚠️ Moved exceptions from $dontReport into $internalDontReport (841b36c)
  • Added Handler::context() method, that by default adds some default context to logs (23b7d6b)
  • ⚠️ Don't set formatter on ErrorLogHandler (a044f17)
  • Use whoops for errors (b697272, f6b67d4, #19471, #20412)
  • Changed how exceptions are logged (#19698, f1971c2)
  • ⚠️ Return HttpException with code 413 from PostTooLargeException (#19773)
  • Support custom logger channel names (#20133)
  • ⚠️ Unify exception formatting (#20173, #20067, #20167, too many follow-up commits, sorry)
  • Added default Handler::unauthenticated() method (11b0de0)

Events

Filesystem

  • ⚠️ Made Storage::files() work like Storage::allFiles() (#18874, 7073457)
  • ⚠️ Fixed compatibility between FilesystemAdapter and the Filesystem interface (#19389)

Helpers

  • Added report() helper (2b67619)
  • Added throw_if() and throw_unless() helpers (18bb4df, #19166, #19255)
  • Added dispatch_now() helper (#18668, 61f2e7b)
  • Added $language parameter to str_slug() helper (#19011)
  • Added str_before() helper (#19940, #20049)
  • Added now() and today() helpers (3c888b6, #20716)
  • Added blank(), filled(), optional() and transform() helpers (06de9b2, 31308e3)
  • Handle lower case words better in as Str::snake() (#18764)
  • Removed usages of the with() helper (#17888)
  • Support multiple patterns in Str::is() (#20108)
  • Speed up Arr::get() calls without dot notations (#20139)
  • Use report() helper in mix() (#20603, bf0cb82)

Localization

  • ⚠️ Moved LoaderInterface to contracts (#20460)
  • ⚠️ Support loading JSON translation for packages (#20599, 573f85c)
  • Support language specific characters in Str (#18974, #19694)

Mail

  • Allow mailables to be rendered directly to views (d9a6dfa)
  • Allow for per-mailable theme configuration (b2c35ca)
  • ⚠️ Removed $data and $callback parameters from Mailer and MailQueue
  • ⚠️ Made Markdown a dependency of MailChannel (#19349)
  • ⚠️ Upgraded to SwiftMailer 6 (#19356)
  • ⚠️ Added to() and bcc() to Mailer contract (#19955)

Notifications

  • Added methods for Slack's thumb_url and unfurl_* options (#19150, #19200)
  • Support sending notifications via AnonymousNotifiable (#19998, ba82579)
  • Accept other types on SlackAttachment::timestamp() (#20671)

Queues

  • Added support for chainable jobs (81bcb03, too many follow-up commits, sorry)
  • ⚠️ Removed redundant $queue parameter from Queue::createPayload() (#17948)
  • Made all getQueue() methods public (#18501)
  • Pass connection and queue to Looping event (#19081)
  • ⚠️ Clone Job specific properties (#19123)
  • ⚠️ Declare missing abstract Job::getRawBody() method (#19677)
  • ⚠️ Fail (or optionally silently delete) job when model is missing during deserialization (44b1f85, bceded6)
  • Added CallQueuedListener::__clone() method (#20022)
  • Accept DatetimeInterface and DateInterval in queue (#20102, 92e2aff)
  • ⚠️ Use dispatch() instead of fire() (#20446)
  • Removed reserved_at index from jobs table stub (#20702)
  • Support job expiration (#20776, 1592b9b)

Redis

Requests

  • ⚠️ Made Request::has() work like Collection::has() (#18715)
  • Added Request::filled() (#18715)
  • ⚠️ Made Request::only() work like Collection::only() (#18695)
  • Aliased Request::exists() to Request::has() (183bf16)
  • Allow passing keys to Request::all() to behave like old Request::only() (#18754)
  • ⚠️ Removed Request::intersect() (#18695)
  • Return request data from ValidatesRequests calls (#19033)
  • Added a validate() macro onto Request (#19063)
  • Added FormRequest::validated() method (#19112)
  • ⚠️ Made request() helper and Request::__get() consistent (a6ff272)
  • Made Request::routeIs() work like Request()::fullUrlIs() (#19267, bfc5321, #19334)
  • Added Request::hasAny() method (#19367)
  • ⚠️ Throw validation exception from ValidatesRequests without formatting response (#19929, 6d33675, ec88362, c264807)
  • Added Request::post() method (#20238)
  • Added Request::keys() method (#20611)

Routing

  • Support fluent resource options (#18767, bb02fb2)
  • Support multiple values in Router::has() (#18758)
  • ⚠️ Bind empty optional route parameter to null instead of empty model instance (#17521)
  • Accept patterns on Route::named(), Router::is() and Router::currentRouteNamed() (#19267, bfc5321)
  • Added domain() setter/getter to Route (#19245, bba04a1)
  • Added Route::redirect() method (#19794)
  • Added Route::view() method (#19835)
  • ⚠️ Improved ThrottleRequests middleware (#19807, #19860)
  • ⚠️ Return proper 304 responses (#19867)
  • Return the resource from Router::apiResource() (#20029)
  • ⚠️ Moved route model binding resolution logic to model (#20521, 370e626, #20542, #20618, d911fa8)
  • Accept string on parameters() and names() methods (#20531, #20529)
  • Handle HEAD requests in Router::view() (#20672)
  • Added ThrottleRequestsWithRedis middleware (#20761, 0a10f9a)

Responses

  • ⚠️ Ensure Arrayable and Jsonable return a JsonResponse (#17875)
  • ⚠️ Ensure Arrayable objects are also morphed by Response (#17868)
  • Added SameSite support to CookieJar (#18040, #18059, e69d722)
  • Accept HeaderBag in ResponseTrait::withHeaders() (#18161)
  • ⚠️ Reset response content-type in Response::setContent() (#18314, #20313)
  • ⚠️ Always retrieve the real original content (#20002)

Service Container

  • ⚠️ Refactored Container (#19201)
  • ⚠️ Made container PSR-11 compliant (#19822, a6068b0, 66325c2)
  • Return the bound instance from Container::instance() (#19442)
  • ⚠️ Use instance instead of deferred service provider (#20714)

Session

  • ⚠️ Default value to true in Store::flash() (#18136)
  • ⚠️ Store the user password hash when logging in (#19843)
  • ⚠️ Throw UnauthorizedHttpException from failedBasicResponse (#20673)

Support

  • Autoload package providers (#19420, a5a0f3e, 2954091, #19455, #19561, #19646)
  • Added support for Responsable objects (c0c89fd, 1229b7f, #19614, ef0e37d)
  • Made Carbon macroable and serializeable (#19771, #20568, 6a18209)
  • Support registering macros using classes (#19782, 353adbd)
  • ⚠️ Moved InteractsWithTime to Illuminate\Support (#20119, #20206)
  • Support callable/invokable objects in Pipeline (#18264)
  • ⚠️ Prevent access to protected properties using array access on Model and Fluent (#18403)
  • ⚠️ Extend MessageBag interface from Arrayable and add getMessages() method (#19768, #20334)
  • Handle Arrayable items in MessageBag (6f1f4d8)
  • Added isNotEmpty() method to message bags and paginators (#19944)
  • Return the collection iterator from AbstractPaginator::getIterator() (#20098)
  • ⚠️ Fixed minimum value of paginator last_page field (#20335)

Task Scheduling

  • Fire before callbacks on closure-based scheduling events (#18861)
  • Run after-callbacks even if a callback event failed (#19573)
  • ⚠️ Fixed bug in quarterly() method (#19600)
  • ⚠️ Support passing boolean into when() and skip() (1d1a96e)

Testing

  • ⚠️ Switched to PHPUnit 6 (#17755, #17864)
  • ⚠️ Renamed authentication assertion methods (#17924, 494a177)
  • ⚠️ Unify database testing traits into RefreshDatabase trait (79c6f67, 0322e32, #20308)
  • ⚠️ Changed Blade tests namespace to Illuminate\Tests\View\Blade (#19675)
  • Added integration tests for the framework itself (182027d, #18438, #18780, #19001, #20073)
  • Allow disabling of specific middleware (#18673)
  • Added withoutExceptionHandling() method (a171f44)
  • Support inline eloquent factory states (#19060)
  • Allow assertSessionHasErrors() to look into different error bags (#19172, 4287ebc)
  • Ensure Redis is available in cache lock tests (#19791)
  • Skip tests if Memcached is not found (#20018)
  • ⚠️ Clear Carbon mock during tear down (#19934)
  • Added debug info to NotFoundHttpException in InteractsWithExceptionHandling (#20000)
  • Added MailFake::assertSentTimes(), QueueFake::assertPushedTimes() and BusFake::assertDispatchedTimes() methods (#20485, e657f6e)
  • Added queue assertions to MailFake (#20454, #20701)
  • Added assertNothingSent() and assertSentTimes() methods to NotificationFake (#20651)
  • Added Mockery expectations to the assertion count (#20606)
  • Fake the default storage disk by default (#20625)
  • Support sending default headers with requests (#20590, c32418e)
  • Support disabling of exception handling for specified exceptions (#20729, 2db9716)

Validation

  • Added support for custom validation rule objects (#19155, 2aa5ea8)
  • Validate against DateTimeInterface instead of DateTime (#20110)
  • ⚠️ Made several method in ValidatesAttributes public (#20200)
  • ⚠️ Added errors() method to Validator interface (#20337)
  • Extend Exists and Unique rule from DatabaseRule class (#20563)
  • Added whereIn() and whereNotIn() constraints to DatabaseRule (#20691, #20739, 52d28e3)
  • Added date_equals rule (#20646)

Views

  • ⚠️ Camel case variables names passed to views (#18083)
  • Added pagination template for Semantic UI (#18463)
  • Allow easier ViewFactory overriding (#20205, 56f103c)
  • Added View::first() (#20695, f18318b)

Added

  • Added MP3 to Testing/MimeType::$mimes (#20745)

Changed

  • Mailables that defined a $delay property will honor it (#20717)

Fixed

  • Fixed route URLs building from artisan commands (#20788)

Fixed

  • Fixed breaking change in FactoryBuilder (#20727)

Added

  • Added Str::start() and str_start() helper (#20569)
  • Added orDoesntHave() and orWhereDoesntHave() to QueriesRelationships (#20685)
  • Added support for callables in model factory attributes (#20692)

Changed

  • Return the model instance from Model::refresh() (#20657)
  • Use self::$verbs in Router::any() (#20698)

Fixed

  • Fixed duplicate user model import in make:policy (#20645, 48f5f23)
  • Fixed PHP 7.2 incompatibility in Builder::mergeWheres() (#20635)
  • Fixed issue in RateLimiter (#20684)
  • Fixed success message after password reset (#20707)
  • Fail job only if it didn't fail already (#20654)

Added

  • Show error message if a reverted migration is not found (#20499, a895b1e)

Changed

  • Moved tap() method from Builder to BuildsQueries (#20384)
  • Made Blade or operator case-insensitive (#20425)
  • Support $amount = 0 in Arr::random() (#20439)
  • Reverted doctrine/inflector version change made in v5.4.31 (#20227)

Fixed

  • Fixed bug when using empty values in SQLiteGrammar::compileInsert() (#20424)
  • Fixed $boolean parameter being ignored in Builder::addArrayOfWheres() (#20553)
  • Fixed JoinClause::whereIn() when using a subquery (#20453)
  • Reset day parameter when using Y-m with date_format rule (#20566)

Added

  • Added FilesystemAdapter::path() method (#20395)

Changed

  • Allow Collection::random() to return 0 items (#20396, #20402)
  • Accept options on FilesystemAdapter::temporaryUrl() (#20394)
  • Sync withoutOverlapping method on Event and CallbackEvent (#20389)
  • Prevent PHP file uploads by default unless explicitly allowed (#20392, #20400)
  • Allow other filesystem adapter to implement temporaryUrl() (#20398)

Fixed

  • Reverted breaking change on BelongsToMany::create() (#20407)

Added

  • Added Blueprint::unsignedDecimal() method (#20243, 3b4483d, 06dcaaa)
  • Added Relation::getMorphedModel() method (#20244)
  • Added Model::isNot() method (#20354)
  • Added FilesystemAdapter::temporaryUrl() method (#20375, 09cfd7f)
  • Added Request::userAgent() method (#20367)

Changed

  • Renamed MakeAuthCommand to AuthMakeCommand (#20216)
  • Don't use asset() helper inside mix() (#20197)
  • Removed array type-hint in Builder::orWhereRaw() signature (#20234)
  • Added empty array default to $attributes on BelongsToMany::create() (#20321)
  • Prepare for PHP 7.2 (#20258, #20330, #20336, #20378)
  • Use unsignedTinyInteger() in jobs.stub (#20382)

Fixed

  • Make sure Model::getDates() returns unique columns (#20193)
  • Fixed pulled doctrine/inflector version (#20227)
  • Fixed issue with chunkById() when orderByRaw() is used (#20236)
  • Terminate user defined database connections after rollback during testing (#20340)

Fixed

  • Handle a non-existing key in ArrayStore (#20156)
  • Fixed bug @guest and @auth directives (#20166, b164e45)

Added

  • Added ManagesFrequencies::twiceMonthly() method (#19874)
  • Added RouteCollection::getRoutesByName() method (#19901)
  • Added $expiresAt parameter to CallbackEvent::withoutOverlapping() (#19861)
  • Support keeping old files when testing uploads (#19859)
  • Added --force option to make:mail, make:model and make:notification (#19932)
  • Added support for PostgreSQL deletes with USES clauses (#20062, f94fc02)
  • Added support for CC and BBC on mail notifications (#20093)
  • Added Blade @auth and @guest directive (#20087, #20114)
  • Added option to configure MARS on SqlServer connections (#20113, c2c917c)

Changed

  • Support object items in Arr::pluck() (#19838, #19845)
  • MessageBag interface now extends Arrayable (#19849)
  • Made Blueprint macroable (#19862)
  • Improved performance for Arr::crossJoin() (#19864)
  • Use the correct User model namespace for new policies (#19965, a7094c2)
  • Consider scheduled event timezone in inTimeInterval() (#19959)
  • Render exception if handler can't report it (#19977)
  • Made MakesHttpRequests::withServerVariables() public (#20086)
  • Invalidate session instead of regenerating it when logging out (#20107)
  • Improved InvalidPayloadException error message (#20143)

Fixed

  • Don't re-escape a View instance passed as the default value to @yield or @section directives (#19884)
  • Make sure migration file is loaded before trying to rollback (#19922)
  • Fixed caching issue in mix() (#19968)
  • Signal alarm after timeout passes (#19978)

Added

  • Added avg() and average() as higher order proxies (#19628)
  • Added fresh() method to Eloquent collection (#19616, #19671)
  • Added ability to remove a global scope with another global scope (#19657)
  • Added Collection::intersectKey() method (#19683)
  • Support setting queue name via broadcastQueue() method (#19703, #19708)
  • Support default return on BelongsTo relations (#19733, #19788, 1137d86, ed0182b)
  • Added unless() method to query builder and collection (#19738, #19740)
  • Added array_random() helper (#19741, #19818, #19826)
  • Support multiple manifest files on mix() (#19764)

Changed

  • Escape default value passed to @yield directive (#19643)
  • Support passing multiple fields to different validation rule (#19637)
  • Only dispatch the MessageSent event if mails should be sent (#19690)
  • Removed duplicate / from public_path() (#19731)
  • Made ThrottlesLogins more customizable (#19787)
  • Support PostgreSQL insert statements with DEFAULT VALUES (#19804)

Fixed

  • Fixed BelongsTo bug with incrementing keys (#19631)
  • Fixed PDO return value bug in unprepared() (#19667)
  • Don't use event() helper in Http\Kernel (#19688)
  • Detect lock wait timeout as deadlock (#19749)
  • Improved escaping special characters in MySQL comments (#19798)
  • Fixed passing email as string to Event::emailOutputTo() (#19802)
  • Fixed withoutOverlapping() not creating mutex (#19834)

Removed

  • Removed role attribute from forms in stubs (#19792)

Added

  • Added Collection::diffAssoc() method (#19604)

Changed

  • Updated PHPUnit whitelist (#19609)

Fixed

  • Update timestamps on soft delete only when they are used (#19627)

Added

  • Added Event::nextRunDate() method (#19537, 09dd336)
  • Added null safe operator <=> to query builder operators list (#19539)
  • Added Macroable trait to RequestGuard (#19569)

Changed

  • Touch updated_at timestamp when soft deleting (#19538)
  • Accept argument list in Rule::in() and Rule::notIn() (#19555)
  • Support checking for strings job names using QueueFake (#19575)
  • Improved image ratio validation precision (#19542)

Fixed

  • Resume scheduled task if an error occurs (#19419)
  • Decode HTML entities in plain text emails (#19518)
  • Added missing locales to MessageSelector::getPluralIndex() (#19562)
  • Use strict check when object is passed to Collection::contains() (#19568)
  • Fixed jobs with a timeout of 0 (#19586)
  • Never pass Throwable to stopWorkerIfLostConnection() (#19591)

Added

  • Added Macroable trait to FactoryBuilder (#19425)
  • Allow a plain text alternative view when using markdown within Mailables (#19436, ad2eaf7)
  • Added nested transactions support for SqlServer (#19439)

Changed

  • Moved env() helper to Support component (#19409)
  • Prevent BadMethodCallException in RedirectResponse::withErrors() (#19426)
  • Suppress error if calling Str::replaceFirst() with an empty search (#19427)
  • Removed the callable type hint for array_sort() (#19483)
  • Return the used traits from TestCase::setUpTraits() (#19486)

Fixed

  • Fixes and optimizations for Str::after() (#19428)
  • Fixed queue size when using Beanstalkd driver (#19465)
  • Check if a mutex can be created before running the callback task in CallbackEvent::run() (#19466)
  • Flip expected and actual value on TestResponse::assertCookie() (#19495)
  • Fixed undefined variable error in Mailable class (#19504)
  • Prevent error notice when database.collation is not set (#19507)

Added

  • Support magic controller methods (#19168)
  • Added Gate resources (#19124)
  • Added Request::routeIs() method (#19202, 26681eb)
  • Route Route::isName() shorthand method (#19227)
  • Added support for custom columns in softDeletes() method (#19203)
  • Added ManagesLayouts::getSection() method (#19213)
  • Added Model::refresh() shorthand (#19174)
  • Added Container::forgetExtenders() method (#19269, 7c17bf5)
  • Added Filesystem::hash() method (#19256)
  • Added TestResponse::assertViewIs() method (#19291)
  • Added path to Paginator (#19314)
  • Added Collection::concat() method (#19318, 0f5337f)
  • Added make() method to HasOneOrMany and MorphOneOrMany relations (#19307)
  • Added str_after() helper function (#19357)
  • Added Router::apiResource() method (#19347)

Changed

  • Move $sizeRules and $numericRules properties from FormatsMessages to Validator (dc7e7cb)
  • Allows calls to Collection::times() without the $callback parameter (#19278)
  • Don't ignore jobs with a timeout of 0 (#19266)
  • Resolve database paginators from the container (#19328)
  • Added news to Pluralizer::$uncountable() (#19353)
  • Switched to using app()->getLocale() in app.stub (#19405)

Fixed

  • Fixed Container::makeWith() not using parameters when resolving interfaces (#19178)
  • Stop validating Memcached connection (#19192)
  • Fixed the position of bound() in Container::instance() (#19207)
  • Prevent applying global scopes on the factory while setting the connection (#19258)
  • Fixed database connection issue in queue worker (#19263)
  • Don't use HTML comments in notification email template (#19289)
  • Fire rebinding callback when using bind() method to bind abstract (#19288)
  • Return 0 from callScope() if $query->wheres is null (#19381)

Added

  • Added Gate::abilities() accessor (#19143, e9e34b5)
  • Added ability to eager load counts via $withCount property (#19154)

Fixed

  • Fixed inversion of expected and actual on assertHeader (#19110)
  • Fixed filesystem bug in Filesystem::files() method on Windows (#19157)
  • Fixed bug in Container::build() (#19161, bf669e1)

Removed

  • Removed window.Laravel object (#19135)

Added

  • Support dynamic number of keys in MessageBag::hasAny() (#19002)
  • Added Seeder::callSilent() method (#19007)
  • Add make() method to Eloquent query builder (#19015)
  • Support Arrayable on Eloquent's find() method (#19019)
  • Added SendsPasswordResetEmails::validateEmail() method (#19042)
  • Allow factory attributes to be factory instances themselves (#19055)
  • Implemented until() method on EventFake (#19062)
  • Added $encoding parameter to Str::length() (#19047, #19079)

Changed

  • Throw exception when invalid first argument is passed to cache() helper (d9459b2)
  • Use getAuthIdentifierName() in Authenticatable::getAuthIdentifier() (#19038)
  • Clone queries without order by for aggregates (#19064)
  • Force host on password reset notification (cef1055)

Fixed

  • Set data key when testing file uploads in nested array (#18954)
  • Fixed a bug related to sub select queries and extra select statements (#19013)
  • Resolve aliases from container when using parameters (#19071)
  • Stop worker if database disconnect occurred (#19080, 583b1b8)
  • Fixed internal call to assertJson() in assertJsonStructure() (#19090)

Added

Fixed

  • Reverted queue prefix option #18860 (#18987)
  • Return null if key is not found from RedisStore:many() (#18984)

Added

  • Added higher order tap (3abc4fb)
  • Added Collection::mapToGroups() (#18949)
  • Added FactoryBuilder::lazy() method (#18823)
  • Support Redis Sentinel configuration (#18850)
  • Added queue.prefix option (#18860, 8510bf9)
  • Allow getDisplayableAttribute() to be used in custom replacers (#18895)
  • Added resourceMethodsWithoutModels() method to AuthorizesRequests (#18916, #18964)
  • Added name to home route (#18942)

Changed

  • Return PendingDispatch for Kernel::queue() (51647eb)
  • Made RedisManager::resolve() public (#18830, eb9b99d)
  • Changed email body color to match wrapper color (#18824)
  • Break and hyphenate long words in emails (#18827)
  • Force database migration to use the write PDO (#18898)
  • Support JSON_PARTIAL_OUTPUT_ON_ERROR on JsonResponse (#18917, db5f011)

Fixed

  • Set connection on model factory (#18846, 95a0663)
  • Fixed route parameter binding for routes with leading slashes (#18855)
  • Don't call cleanParameterBag() twice during JSON request (#18840)
  • Prevent exception in getActualClassNameForMorph() when morph map is null (#18921)
  • Use protocol-relative URL in mix() helper (#18943)
  • Cast $viaChannels to array (#18960)

Added

  • Added ability to send link_names parameter in Slack notification (#18765)
  • Added Mailable::hasFrom() method (#18790)

Changed

  • Made Mailer macroable (#18763)
  • Made SessionGuard macroable (#18796)
  • Improved queue worker output (#18773)
  • Added newModelInstance() method to Eloquent Builder (#18775)
  • Use assertions instead of exceptions in MocksApplicationServices (#18774)

Fixed

  • Fixed memory issue in Container (#18812)
  • Set database connection while retrieving models (#18769)

Added

  • Added assertSuccessful() and assertRedirect() to TestResponse (#18629)
  • Added assertSeeText() and assertDontSeeText() to TestResponse (#18690)
  • Added assertJsonMissing() to TestResponse (#18721, 786b782)
  • Added support for attaching an image to Slack attachments $attachment->image($url)(#18664)
  • Added Validator::extendDependent() to allow adding custom rules that depend on other fields (#18654)
  • Added support for --parent option on make:controller (#18606)
  • Added MessageSent event to Mailer (#18744, 6c5f3a4)

Changed

  • Don't trim leading slashes on local filesystem base URLs (acd66fe)
  • Accept variable on @empty() directive (#18738)
  • Added string validation rules to AuthenticatesUsers (#18746)

Fixed

  • Fixed an issue with Collection::groupBy() when the provided value is a boolean (#18674)
  • Bring back an old behaviour in resolving controller method dependencies (#18646)
  • Fixed job release when exception occurs (#18737)
  • Fixed eloquent increment() and decrement() update attributes (#18739, 1728a88)

Added

  • Added getManager() and setManager() to queue worker (#18452)
  • Added support for Pheanstalk's $timeout and $persistent options (#18448)
  • Added Collection::times() method (#18457)
  • Added PostgreSQL's REAL data type (#18513)
  • Added flatMap to collection higher order proxies (#18529)
  • Support multiple --path parameters with migrate:reset (#18540)
  • Store SparkPost Transmission-ID in the header after sending message (#18594)

Changed

  • Check for Htmlable instead of HtmlString in Mailer::renderView() (#18459, da7b006)
  • Added mutex for schedule events (#18295, ae2eb1f)
  • Don't use helper functions in service providers (#18506, #18521)
  • Change user_id to unsigned integer in database session stub (#18557)
  • Improved performance of UrlGenerator::isValidUrl() (#18566)

Fixed

  • Handle missing or malformed config/app.php file (#18466, 92931cf)
  • Only call up and down on migration if the method exists (d27d94e)
  • Fixed overwriting of routes with identical path and method (#18475, 5aee967)
  • Fixing model/route binding with identical name (#18476)
  • Allow rollbackMigrations() path to be with string (#18535)
  • Use getStatusCode() in TestResponse::assertRedirect() (#18559)
  • Case parseIds() to array in InteractsWithPivotTable::sync() (#18547)
  • Preserve route parameter names (#18604)
  • Fixed several image validation issues (#17983)

Added

  • Added PHPDBG detection to runningInConsole() (#18198)
  • Added Arr:wrap() method (#18216)
  • Allow scheduling of queued jobs (#18235, 7bb67e2)
  • Allow skipping mail sending if a listener to MessageSending returns false (#18245)
  • Added BcryptHasher::cost() method (#18266)
  • Added Command::alert() method (#18272)
  • Added tap() method to query builder (#18284)
  • Added orderByDesc() methods to query builder (#18292)
  • Added Container::makeWith() method (#18271, #18320)
  • Added InteractsWithDatabase::assertSoftDeleted() (#18328, 2d4e1f0, f89f917)
  • Added ability to set queue parameters inside queued listeners (#18375, cf461e2)
  • Added Model::setKeyType() (#18354)
  • Output migration name before starting a migration or rollback (#18379, e47e8b1)
  • Added pipeline(), transaction(), and executeRaw() to PhpRedisConnection (#18421)
  • Added @isset() directive (#18425)
  • Added tinyIncrements() database schema method (#18424)

Changed

  • Throw exception when bootstrap/cache directory is not writable (#18188, b4f0005)
  • Use resource_path() helper in MakeAuthCommand (#18215)
  • Added file_exists() check to Event::emailOutput() (c8eafa8)
  • Allow wildcards in MIME type validations (#18243)
  • Only push existing jobs back into the queue using queue:retry (#18279, e874a56)
  • Support file uploads in nested array (#18276)
  • Don't use config() helper in Mail component (#18290)
  • Return the insert ID from DatabaseJob::release() (#18288, #18291)
  • Changed id in failed jobs migration stub to bigIncrements() (#18300)
  • Prevent make:auth from overwriting existing views (#18319, bef8f35)
  • Ensure Mailable view data is not overridden by order of operations (#18322)
  • Use getAuthIdentifier() method in broadcasters (#18351)
  • Use atomic cache operation when checking for event overlaps (8ebb5b8)
  • Return pretty JSON response from HasInDatabase::failureDescription() (#18377)
  • Allow Validator extension to use array-style callable (#18399)
  • Pass the condition value to query builder's when() method (#18419)
  • Don't require returning the query from when() method (#18422)

Fixed

  • Fixed an issue with slots when passed content equals null (#18246)
  • Do require Closure in orWhereHas() (#18277)
  • Let PHP parse @includeWhen directive (#18285)
  • Only include .php files when loading database factories (#18336)
  • Fixed PHP 5.6 issue in FileFactory::generateImage() (#18345)
  • Allow ImplicitRouteBinding to match camelcase method parameter names (#18307, 4ae31a1)
  • Fixing weird behaviour of Connection::getConfig() when null was passed (#18356)
  • Attempt to solve an issue with using required_* rules while the ConvertEmptyStringToNull middleware is applied (#18376)
  • Fixed faking of model events (d6cb75c)
  • Prevent model event result from firing observable events (#18401, 0607db0)
  • Fix issue in authorizeResource() with compound names (#18435)

Added

  • Added any() method to ViewErrorBag (#18176)
  • Added Storage and File fakes (#18178, #18180)

Changed

  • Made queue worker properties $shouldQuit and $paused public (e40c0e7)

Fixed

  • Proxy isset() checks on TestResponse (#18182)