Laravel Versions Logo

Laravel Version: 5.5.0

Status:

Not receiving bug or security fixes

Recommendation:

Update at least to a security-maintained version as soon as possible!
The lowest version still getting security fixes is: 10
To upgrade, follow the instructions in the docs or use Laravel Shift to upgrade automatically.

Latest Patch Release:

5.5.50

Major Version Release date Bug Fixes Until Security Fixes Until PHP Versions Status
5.5 August 30, 2017 August 30, 2019 August 30, 2020 7.0, 7.1, 7.2
EOL

Releases

5.5.50

No changelog available.

5.5.49

No changelog available.

5.5.48

No changelog available.

5.5.47

No changelog available.

5.5.46

No changelog available.

5.5.45

No changelog available.

5.5.44

Changed

Fixed

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

No changelog available.

5.5.42

No changelog available.

5.5.41

No changelog available.

5.5.40

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)
5.5.39

Fixed

5.5.38

Fixed

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

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)
5.5.36

Changed

  • Upgrade Parsedown to 1.7.0 (14adb99)

Fixed

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

Fixed

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

Changed

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

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)
5.5.32

Fixed

5.5.31

Fixed

5.5.30

Changed

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

Fixed

5.5.29

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)
5.5.28

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)
5.5.27

Added

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

Changed

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

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)
5.5.25

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)
5.5.24

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)
5.5.23

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)
5.5.22

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)
5.5.21

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)
5.5.20

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)
5.5.19

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)
5.5.18

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)
5.5.17

Fixed

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

No changes.

5.5.15

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)
5.5.14

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)
5.5.13

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)
5.5.12

Added

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

Fixed

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

Fixed

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

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)
5.5.9

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)
5.5.8

Fixed

  • Fixed issue with routes sorting (#21261)
5.5.7

Fixed

  • Fix CacheClearCommand binding (#21256)
5.5.6

Changed

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

Fixed

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

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)
5.5.4

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)
5.5.3

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)
5.5.2

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)
5.5.1

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)
5.5.0

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)