Skip to content

Latest commit

 

History

History
878 lines (696 loc) · 78.7 KB

CHANGELOG-5.5.md

File metadata and controls

878 lines (696 loc) · 78.7 KB

Release Notes for 5.5.x

v5.5.33 (2018-01-30)

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)

v5.5.32 (2018-01-18)

Fixed

v5.5.31 (2018-01-16)

Fixed

v5.5.30 (2018-01-16)

Changed

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

Fixed

v5.5.29 (2018-01-15)

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)

v5.5.28 (2017-12-26)

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)

v5.5.27 (2017-12-20)

Added

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

Changed

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

v5.5.26 (2017-12-18)

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)

v5.5.25 (2017-12-11)

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)

v5.5.24 (2017-12-06)

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)

v5.5.23 (2017-12-04)

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)

v5.5.22 (2017-11-27)

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)

v5.5.21 (2017-11-14)

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)

v5.5.20 (2017-11-07)

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)

v5.5.19 (2017-10-25)

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)

v5.5.18 (2017-10-19)

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)

v5.5.17 (2017-10-17)

Fixed

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

v5.5.16 (2017-10-16)

No changes.

v5.5.15 (2017-10-16)

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)

v5.5.14 (2017-10-03)

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)

v5.5.13 (2017-09-24)

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)

v5.5.12 (2017-09-22)

Added

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

Fixed

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

v5.5.11 (2017-09-21)

Fixed

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

v5.5.10 (2017-09-21)

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)

v5.5.9 (2017-09-20)

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)

v5.5.8 (2017-09-20)

Fixed

  • Fixed issue with routes sorting (#21261)

v5.5.7 (2017-09-19)

Fixed

  • Fix CacheClearCommand binding (#21256)

v5.5.6 (2017-09-19)

Changed

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

Fixed

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

v5.5.5 (2017-09-19)

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)

v5.5.4 (2017-09-13)

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)

v5.5.3 (2017-09-07)

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)

v5.5.2 (2017-09-04)

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)

v5.5.1 (2017-09-01)

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)

v5.5.0 (2017-08-30)

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)