Laravel Framework v5
https://github.com/laravel/framework
v5.8.35 (2019-09-03)
Added
- Added support of
NOT RLIKESQL operator (#29788) - Added hebrew letters to
Str:sluglanguage array (#29838, ba772d6) - Added support of
php7.4(#29842)
Fixed
- Fixed self-referencing
MorphOneOrManyexistence queries (#29765) - Fixed
QueueFake::size()method (#29761, ddaf6e6)
Changed
v5.8.34 (2019-08-27)
Fixed
- Fixed
MailMessage::render()ifviewmethod was used (#29698) - Fixed setting of numeric values as model attribute (#29714)
- Fixed mocking of events
untilmethod inMocksApplicationServices(#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
insertOrIgnoresupport (#29639, 46d7e96, #29645) - Allowed to override the existing
Whoopshandler.(#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
outputandquestionsexpectations (#29580) - Added ignoring of classes which are not instantiable during event discovery (#29587)
- Used real classname for seeders in the output (#29601)
Refactoring
- Simplified
isset()(#29581)
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_createto prevent date validator warnings (#29342, #29389)
v5.8.30 (2019-07-30)
Added
- Added
MakesHttpRequests::option()andMakesHttpRequests::optionJson()methods (#29258) - Added
Blueprint::uuidMorphs()andBlueprint::nullableUuidMorphs()methods (#29289) - Added
MailgunTransport::getEndpoint()andMailgunTransport::setEndpoint()methods (#29312) - Added
WEBPto 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
$modifiersorder (#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
DateTimeobjects andintvalues inorWhereDay(),orWhereMonth(),orWhereYear()methods in theBuilder(#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
v5.8.29 (2019-07-16)
Added
- Added possibility for
WithFaker::makeFaker()use localapp.faker_localeconfig (#29123) - Added ability to set theme for mail notifications (#29132)
- Added runtime for each migration to output (#29149)
- Added possibility for
whereNullandwhereNotNullto 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()andBuilder::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()andSupport\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
mixhelper useapp.mix_urlconfig (#28952) - Added
RedisManager::setDriver()method (#28985) - Added
whereHasMorph()and corresponding methods to work withMorphTorelations (#28928)
Fixed
- Fixed: Changing a database field to binary include
collation(#28975) - Fixed app.stub for jquery components loading (#29001)
- Fixed equivalent for greek letter theta in
Str::ascii()(#28999)
Changed
- Prevented
TestResponse::dump()andTestResponse::dumpHeaders()methods from ending execution of the script (#28960) - Allowed
TestResponse::dump()andTestResponse::dumpHeaders()methods chaining (#28967) - Allowed to
NotificationFakeaccept custom channels (#28969) - Replace contents of service manifest atomically (#28973)
- Pass down the
serverVersiondatabase connection option to Doctrine DBAL connection (#28964, 1b55b28) - Replace
self::withstatic::in theRelation::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
jsonoption toroute:listcommand (#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
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
ServeCommandviaSERVER_PORTenv variable (#28849, 6a18e73) - Allowed console environment argument to be separated with a space (#28869)
- Added
@endcomponentFirstdirective (#28884) - Added optional parameter
$whentoretryhelper (85c0801)
Fixed
- Fixed
Builder::dump()andBuilder::dd()with global scopes (#28858)
Reverted
Changed
- Handle
SuspiciousOperationExceptionin router asNotFoundHttpException(#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
@componentFirstdirective (#28783) - Added support for typed eager loads (#28647, d72e3cd)
- Added
RelatedandRecommendedto 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
dropAllTableswhen foreign key constraints exist (#28750, #28770) - Fixed
Model::getConnectionName()whenModel::cursor()used (#28804)
Changed
v5.8.20 (2019-06-04)
Added
- Added
viewAny()to dummy policy class (#28654, #28671) - Added
fullpathoption tomake:migrationcommand (#28669)
Performance improvement
Fixed
- Fixed
artisan cache:clearcommand with a redis cluster using the Predis library (#28706)
v5.8.19 (2019-05-28)
Added
- Added optional
DYNAMODB_ENDPOINTenv 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 (
sourceipandlocaldomain) smtp config options (#28631, 435c05b)
Fixed
- Fixed Eloquent UPDATE queries with alias (#28607)
- Fixed
Illuminate\Cache\DynamoDbStore::forever()(#28618) - Fixed
event:listcommand, when using a combination of manually registering events and event auto discovering (#28624)
Performance improvement
- Improve performance for
Arr::flatten()(#28614)
Changed
- Added
idtoModelNotFoundExceptionexception inImplicitRouteBinding(#28588)
v5.8.18 (2019-05-21)
Added
- Added
htmlas a new valid extension for views (#28541) - Added: provide notification callback
withSwiftMessageinMailMessage(#28535)
Fixed
- Fixed
Illuminate\Cache\FileStore::getPayload()in case of broken cache (#28536) - Fixed exception:
The filename fallback must only contain ASCII charactersin theIlluminate\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
- Cleanup html (#28583)
2019/05/14
Added
- Added
Illuminate\Foundation\Testing\TestResponse::dumpHeaders()(#28450) - Added
ends_withvalidation rule (#28455) - Added possibility to use a few
columnsarguments in theroute:listcommand (#28459) - Added
retryAfterinMail\SendQueuedMailableandNotifications\SendQueuedNotificationsobject (#28484) - Added
Illuminate\Foundation\Console\Kernel::scheduleCache()(6587e78) - Added support for multiple
--pathoptions within migrate commands (#28495) - Added
Tappabletrait (#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
PhpRedisConnectionandPredisConnection(f4e8d5c)
Fixed
- Fixed session resolver in
RoutingServiceProvider(without bind ofsessioninContainer) (#28438) - Fixed
route:listcommand when routes were dynamically modified (#28460, #28463) - Fixed
requiredvalidation with multiplepasses()calls (#28502) - Fixed the collation bug when changing columns in a migration (#28514)
- Added password to the
RedisClusteronly ifredis>=4.3.0(1371940) - Used
escapeshellargon windows symlink inFilesystem::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:freshcommand (#28382) - Added
Renderablefunctionality toMailMessage(#28386)
Fixed
- Fixed the remaining issues with registering custom Doctrine types (#28375)
- Fixed
fromSub()andjoinSub()with table prefix inQuery\Builder(#28400) - Fixed false positives for
Schema::hasTable()with views (#28401) - Fixed
syncresults with customPivotmodel (#28416, e31d131)
Changed
- Modified
NoneAndReactpresets withvue-template-compiler(#28389) - Changed
navbar-laravelclass tobg-white shadow-smclass inlayouts\app.stub(#28417) - Don't execute query in
Builder::findMany()when ids are emptyArrayable(#28432) - Added parameter
passwordforRedisClusterconstruct 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
ddmethod 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
@errorblade directive (#28273) - Convert email data tables to layout tables (#28286)
Reverted
- Partial reverted ability of register custom Doctrine DBAL, since of #28282 issue (#28301)
Refactoring
v5.8.13 (2019-04-18)
Added
- Added
@errorblade directive (#28062) - Added the ability to register
custom Doctrine DBALtypes in the schema builder (#28214, 91a6afe)
Fixed
Reverted
- Reverted of
possibility for use in / not in operators in the query buildersince of issue withwherePivot()method (04a547ee)
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()toIlluminate\Console\Scheduling\Event(#28167) - Added
SETdatatype on MySQL Grammar (#28171) - Added possibility for use
in/not inoperators in the query builder (#28192)
Fixed
- Fixed memory leak in JOIN queries (#28220)
- Fixed circular dependency in
Support\Testing\Fakes\QueueFakefor undefined methods (#28164) - Fixed exception in
lt\lte\gt\gtevalidations with different types (#28174) - Fixed
string quotingforSQL Server(#28176) - Fixed
whereDayandwhereMonthwhen passingintvalues (#28185)
Changed
- Added
autocompleteattributes to the html stubs (#28226) - Improved
event:listcommand (#28177, cde1c5d) - Updated
Illuminate\Database\Console\Factories\FactoryMakeCommandto generate more IDE friendly code (#28188) - Added missing
LockProviderinterface onDynamoDbStore(#28203) - Change session's user_id to unsigned big integer in the stub (#28206)
v5.8.11 (2019-04-10)
Added
- Allowed to call
macrosdirectly onIlluminate\Support\Facades\Date(#28129) - Allowed
lockto be configured inlocal 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
realpathtoapp_pathduring string replacement inIlluminate\Foundation\Console\Kernel::load()(82ded9a)
Refactoring
v5.8.9 (2019-04-02)
Added
Fixed
- Fixed serializing a collection from a
ResourcewithpreserveKeysproperty (#27985) - Fixed:
SoftDelete::runSoftDeleteandSoftDelete::performDeleteOnModelwith overwrittenModel::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:generatecommand (#28007) - Fixed unique validation without ignored column (#27987)
Changed
- Added
parametersargument toresolvehelper (#28020) - Don't add the path only if path is
emptyin 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
envvariables withgetenv()(#27958, c37702c) - Used
stripslashesforValidation\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
OtherDeviceLogoutevent (#27865, 5e87f2d) - Added
evenandoddflags to theLoopvariable in theblade(#27883)
Changed
- Add replacement for lower danish
æ(#27886) - Show error message from exception, if message exist for
403.blade.phpand503.blade.phperror (#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
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
Strclass (#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
belongsToManyto takeModel/Pivotclass name as a second parameter (#27774)
Fixed
- Fixed environment variable parsing (#27706)
- Fixed guessed policy names when using
Gate::forUser(#27708) - Fixed
viaasstringin theNotification(#27710) - Fixed
StartSessionmiddleware (499e4fe) - Fixed
stackchannel's bug related to thelevel(#27726, bc884bb) - Fixed
emailvalidation for not string values (#27735)
Changed
- Check if
MessageBagis empty before checking keys exist in theMessageBag(#27719)
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
Changed
- Update vue preset to exclude
@babel/preset-react(#27645) - Reflash the session for the broadcasting auth call (#27647)
- Improving readability in
AuthenticateWithBasicAuthMiddleware (#27661) - Use safe container getter on
Pipeline(#27648)
Fixed
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
MorphTowithwithDefault()(#27411)"(9bbf644)
Changed
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
ENVto control paths ofcache filesforservices,packagesandroutes(#27389)
Fixed
- Fixed
BelongsToManypivot relationship child with loaded relations wakeup (#27358) - Fixed wrong class being used when eager loading nullable
MorphTowithwithDefault()(#27411)
Changed
- Removed
php_network_getaddresses: getaddrinfo failed: Name or service not knowninDetectsLostConnectionstrait (#27418)
v5.7.23 (2019-01-29)
Added
- Added
AbstractPaginator::getOptions()method (#27273) - Added
Communication link failuretoDetectsLostConnectionstrait (#27307) - Added
orWhere()proxyforscopestoEloquentBuilder(#27281, 2e6fe85) - Allow the
app pathto be configured (#27332, d73e672) - Added config for using
WhatFailureGroupHandlerwhenStackDrivercreated for Logger (#27308 ,6a92651)
Fixed
- Fixed
QueueableCollectionserialization of Eloquent Models when usingBinary IDs(#27271) - Replaced
newModelQuery()withnewQueryWithoutRelationships()forUPDATE/DELETEqueries (#27277)
Changed
v5.7.22 (2019-01-22)
Fixed
- Fixed
TestResponse::assertJsonValidationErrors()when there are no errors (#27190)
Changed
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 returnboolvalue (#27156) - Fixed
TestResponse::assertSessionDoesntHaveErrors()when there is no errors (#27145) - Fixed default message is localization twice in
403.blade.phperror page (4a08120)
Changed
v5.7.20 (2019-01-08)
Added
- Added
chunkByIdsupport in relations (#26919) - Added
Collection::whereNotBetweenmethod (#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 failedtoDetectsLostConnectionstrait (#27055) - Added
Route::originalParameters()(#27056) - Added
QueueFake::pushedJobs()(#27089, 695ffa1)
Fixed
- Prevents unnecessary queries when lazy loading empty relationships (#26992)
- Fixed broken
Command::setHiddenmethod (#27005) - Fixed
Str::slugmethod (#27002) - Ignore
--seedoption forartisan migrate --pretend(#27015) - Fixed
previousUrlin the session if the call isprefetch(#27017) - Fixed nullable
MorphTotouching (#27031) - Fixed
Collection::loadMissing()with duplicate relation names (#27040) - Fixed some commands (#27020)
- Ensured the command
contextis forwarded to calls (#27012, #27065) - Fixed
Collection::loadMorph()issue relations loading issue (#27081)
Changed
- Removed
HasOneOrMany::update()sinceBuilder::update()already adds theUPDATED_ATtimestamp. (#27026) - Changed
Name or service not knowntophp_network_getaddresses: getaddrinfo failed: Name or service not knowninDetectsLostConnectionstrait (#27054, 5459ac1) - Changed Eloquent
ApiResource merge()methods to acceptJsonResourceobject (#27068) - Stop email re-verification with same link (#27070)
v5.7.19 (2018-12-18)
Added
- Added
Illuminate\Support\Collection::whereBetweenmethod (#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_withvalidation message (#26822) - Added
Facade::resolved()method to register pending callback until the service is available. (#26824) - Added env var
APP_CONFIG_CACHEto control cache config path (578bc83)
Changed
- Changed
TransportManager::createMailDriver(#26846)
Fixed
- Fixed of using
illuminate/mailoutside of Laravel with driver log (#26842) - Fixed some bugs for
app()->call()(#26852) - Added workaround for PHP-bug related to incorrect variable values when Opcache enabled in PHP v 7.3.0 (36d3436)
v5.7.17 (2018-12-12)
Added
- Added
Database\Query\Builder::insertUsingmethod (#26732, 8216b46) - Added
Database\Query\Builder::havingBetweenmethod (#26758) - Added
Packets out of order. Expectedstring toDetectsLostConnectionstrait (#26760) - Added
NOT VALIDoption for skipping validation when adding postgres foreign keys (#26775)
Fixed
v5.7.16 (2018-12-05)
Added
- Added localization for
403.blade.phpand503.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 inapp.stub(#26708) - Fixed
Collection::somemethod (#26696) - Revert breaking change in
TestResponse::decodeResponseJsonmethod (#26713) - Fixed
PhpRedisConnection::mget(#26716) - Fixed
Eloquent\Collection::loadCountattribute syncing (#26714) - Fixed
Illuminate\Foundation\Testing\Concerns\InteractsWithDatabase::seedfor array accepting (#26734) - Fixed
FormRequestvalidation 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
$cachedSchemaproperty inUrlGeneratoris deprecated. Will be renamed to the$cachedSchemein 5.8 (#26640)
v5.7.15 (2018-11-26)
Added
- Added
date_equalsvalidation message (#26584) - Added
starts_withvalidation rule (#26612) - Added relationship getters
BelongsToMany::getParentKeyName,BelongsToMany::getRelatedKeyName,HasManyThrough::getFirstKeyName,HasManyThrough::getForeignKeyName,HasManyThrough::getSecondLocalKeyName,HasOneOrMany::getLocalKeyName,MorphToMany::getInverse(#26607) - Make
ResourceCollectioncountable (#26595)
Fixed
v5.7.14 (2018-11-21)
Added
- Added
Macroabletrait toIlluminate\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_channelconfig for makelogfor mail driver configurable (#26510) - Allowed
assetroot urls to be configurable viaapp.asset_url(9172a67) - Added
Error while sending QUERY packetstring toDetectsLostConnectionstrait (#26233) - Added env override for running in console (a36906a, 19f2245)
Fixed
- Fixed
UNIONaggregate queries with columns (#26466) - Allowed migration table name to be guessed without
_tablesuffix (#26429) - Fixed
TestResponse::assertExactJsonfor 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
mixmissing asset exceptions (#26431) - Used
assethelper to generate full path urls in exception views (#26411) - Changed
Illuminate\Foundation\Testing\Concerns\MocksApplicationServices::withoutJobsmethod (#26437) - Cached
distinctvalidation 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/unlessNotEmptymethods toCollection(#26345) - Added
Illuminate\Support\Collection::somemethod (#26376, 8f7e647) - Added
Illuminate\Cache\Repository::missingmethod (#26351) - Added
Macroabletrait toIlluminate\View\Factory(#26361) - Added support for UNION aggregate queries (#26365)
Changed
- Updated
AbstractPaginator::appendsto 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::validatemacro in Auth traits (#26314)
v5.7.12 (2018-10-30)
Added
- Added
CacheManager::forgetDrivermethod (#26264, fd9ef49) - Added
Illuminate\Foundation\Http\Kernel::getMiddlewareGroupsmethod (#26268) - Added an sqlite config option (
foreign_key_constraints) to enable / disable foreign key constraints (#26298, 674f8be, #26306)
Fixed
- Checked
$absoluteparameter inUrlGenerator::signedRoute(#26265) - Fixed error in resource building after running
php artisan preset nonecommand (41becda, #26244) - Fixed
whereDoesntHave()anddoesntHave()with nested relationships (#26228) - Fixed filesystem locking hangs in
PackageManifest::build()(#26254)
Changed
- Made expectation closure optional for
InteractsWithContainer::mockandInteractsWithContainer::spy(#26242) - Allowed multiple
createPayloadCallbackon queues (#26250, 6e3d568) - Changed wording on default 403 view (#26258)
- Bump
vue.jsto^2.5.17inartisan preset vuecommand (89f56bf, #26244) - Allowed adding additional
$manyMethodswhen 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
setIntendedUrlmethod toRouting/Redirector.php(#26227) - Added
ORA-03114string toDetectsLostConnectionstrait (#26233)
Fixed
- Fixed an issue where the worker process would not be killed by the listener when the timeout is exceeded (#25981)
Changed
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
assertSoftDeletedmethod inFoundation/Testing/Concerns/InteractsWithDatabase.php(#26133 , #26148) - Added possibility to define exclude methods on registered
apiResource(#26149) - Added
filp/whoopstosuggestincomposer.json(#26180) - Added
mockandspymethods toFoundation/Testing/Concerns/InteractsWithContainer.php(#26171, b50f9f3) - Added
uuidvalidation rule to validator (#26135) - NotificationFake can assert preferred locale (#26205)
Fixed
- Fixed
whereHasand$withCountbindings frompolymorphic relationships(#26145) - Fixed
getTablemethod in Model (#26085) - Fixed filesystem locking hangs in
PackageManifest::build()(#26010, 98b8256) - Fixed
Illuminate/Http/Testing/File.phpfor Symfony 4.1 components (#26080) - Fixed URL in
Notifications/resources/views/email.blade.php(22ca105) - Fixed
hasValidSignaturemethod when someone send anullsignature inUrlGenerator.php(#26132) - Fixed autocomplete for container in ServiceProvider for cases when someone developed packages (#26063)
- Fixed
ColumnDefinition::defaulttypehint (#26041)
Changed
- Define mix as const in
react-stubs/webpack.mix.jsandvue-stubs/webpack.mix.jspresets (#26119) - Make
assertSessionHasNoErrorsinTestResponse.phpprint the unexpected errors (#26039, e6bdf8a) - Replaced the remaining occurrences of
newQuery()tonewModelQuery()in UPDATE/DELETE queries. (#26158) - Improved
findOrFail()exceptions inBelongsToMany.phpandHasManyThrough.phprelations (#26182)
Changed realization
- Reversed ternary condition in
Arr::wrapto make it clearer (#26150) - Simplified
formatActioninUrlGenerator.php(#26121) - Simplified
isChainOfObjectsmethod inSupport/Testing/Fakes/QueueFake.php(#26151) - Deleted unneeded code (#26053, #26162, #26160, #26159, #26152)
- Prefer stricter comparison (#26139, #26157)
- Removed duplicated code from
Router::updateGroupStackmethod (#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 imperativequote toInspiring.php(#25968) - Mailable
rendermethod respectsMailable@localeproperty (#25990) - Added some meta data to the notification mails (477273c)
- Added
Macroabletrait toPendingResourceRegistration(#25947) - Added
assertSessionDoesntHaveErrorsmethod toTestResponse.php(#25949, 3005706) - Enable passing options to custom presets (#25930)
Fixed
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()indata_get()(#25938)
v5.7.8 (2018-10-04)
Added
- Add
--steptomigrate:freshcommand (#25897) - Allow
destroymethod inModelto accept a collection of ids (#25878) - Add AsPivot trait (#25851)
Fixed
- Fixed wrap table for sql server (#25896)
Changed
- Use "optimize:clear" in "app:name" command (#25922)
- Revert of "html string support in translator" (e626ab32a4afec90f80641fbcd00e6b79d15cd3a)
Changed (only realization)
- Simplify code for contextual binding (e2476c1cdfeffd1c4432ec8dc1f733815f70c000)
v5.6.39 (2018-10-04)
Fixed
- Fixed broken email sub-copy template escaping (#25734)
- Fixed required carbon version (394f79f9a6651b103f6e065cb4470b4b347239ea)
- Fixed translation escaping (25858, 4c465007bbf51d7f269871cd76b6d99de7df90bb)
Changed
- Revert of "Patch Blade's
@langdirective", so it is not escapes HTML tags (0b7b3713e81fe571c244c2cf5d1f5085b6985f96)
Fixed
v5.7.7 (2018-10-02)
Added
- Allow array callables to be passed to Gate::before() (#25817)
- Mail recipient and notifiable can set preferred locale (#25752)
- Always show seeder info (#25872)
- Support JSON UPDATE queries on PostgreSQL (#25797)
- Makes sure changing a database field to JSON does not include a collation (#25741)
- Added Queued Closures (#25777)
- Add the ability to skip algorithm checking (#25468, 5fd4b899cc42d266fab34ee2d5f92fb47ca34fd0)
- Add queue create payload hook (3f68cbe3df82990c69e34309901fcefefdb65c95)
- Authorize Middleware Accept String Parameters (#25763)
Fixed
- Fix
eachmethod on BelongsToMany relationships (#25832) - Fix prefixed table indexes (#25867)
- Fix
bemethod inInteractsWithAuthenticationtrait (#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
- Trim model class name when passing in
Authorize.phpmiddleware (#25849) - Improve JSON UPDATE queries on MySQL (#25794)
- Don't print the generated application key (#25802)
- Improve "exists" validation with array values (#25819)
- Only escape trans parameters (98046cb0c81b418fb4046ade034f3d33a4172239)
- Added type check for assertExitCode(0) (#25847)
Changed (only realization)
- Simplify
savemethodMorphOneOrManyrelation (#25864)
v5.7.6 (2018-09-25)
Added
- Support MorphTo eager loading with selected columns (#25662)
- Added possibility to define a complex condition (overwrite
shouldAddXsrfTokenCookiemethod) for add cookie to response inMiddleware/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
- Add callback hook for building mailable data in
\Illuminate\Mail\Mailable(7dc3d8d35ad8bcd3b18334a44320e3162b9f6dc1)
Fixed
- Make any column searchable with
likein PostgreSQL (#25698) - Remove trailing newline from hot url in
mixhelper (#25699)
Changed
- Revert of "Remove
Hash::check()for password verification" (2e78bf472832cd68ef7d80c73dbb722a62ee1429)
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
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
Added
- Added
FilesystemManager::forgetDisk()method (#24057, cbfb4fb) - Added
--allowparameter todowncommand (#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/Connectioninterface (#24142)
Fixed
- Fixed unsetting request parameters during
HEADrequests (#24092) - Fixed
HasManyThroughreturning incorrect results withchunk()(#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
- 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
ValidationExceptioninThrottlesLoginsto429(#24002) - Throw exception if called command doesn't exist (#23942)
- Made notification email translatable (#23903)
Fixed
Added
- Added helpers for subquery joins (#23818)
Changed
- Allow
PendingResourceRegistrationto be fluently registered (#23890) - Allow asserting an integer with
assertSee*()(#23892) - Allow passing
CollectiontoRule::in()andRule::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
Viewmacroable (#23787) - Added database
Connection::unsetEventDispatcher()method (#23832) - Support IAM role session token to be used with SES (#23766)
Changed
- Added displayable value to
required_unlessrule (#23833)
Fixed
- Fixed
RedisQueue::blockingPop()check when using PhpRedis (#23757)
Added
- Added
view:cachecommand (9fd1273, 2ab8acf) - Added
min()andmax()to as higher order proxies (#23560) - Added
@elseauthand@elseguestBlade directives (#23569) - Added support for hashing configuration (#23573, d6e3ca9)
- Allow tagged cache keys to be incremented/decremented (#23578)
- Added
SeeInOrderconstraint to avoid risky test notices (#23594, ca39449) - Support higher order
groupBy()(#23608) - Support disabling setting
created_atin models (#23667) - Added callback support to
optional()helper (#23688) - Added
Eloquent\Collection::loadMorph()method (#23626)
Changed
- Support generating a signed route with a
UrlRoutableparameter (#23584) - Use
DIRECTORY_SEPARATORinApplication::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
InvalidSignatureExceptionfrom401to403(#23662, c99911f)
Fixed
Added
- Added
fromSub()andfromRaw()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()andassertForbidden()methods toTestResponse(#23526) - Added test helpers to assert that a job has been queued with a chain (#23531, 696f4d8)
Changed
- Only set id on
NotificationFakeif there is no id set (#23470) - Check whether
fetch()method exists inApplication::output()(#23471) - Improve asset loading in
app.stub(#23479) - Support ignoring a model during a unique validation check (#23524)
- Support multiple model observers (#23507)
LogManagerdriver capable of producing logger with any Monolog handler (#23527, d499617)- Support passing model instance to
updateExistingPivot()(#23535) - Allow for custom
TokenGuardfields (#23542)
Fixed
- Fixed clearing the cache without a cache directory (#23538)
Added
- Added
Blueprint::dropMorphs()(#23431) - Added
Mailable::attachFromStorage()methods (0fa361d) - Added
orWhere*()builder methods for day, month and year (#23449)
Changed
- Added
v-preto dropdown link inapp.stub(98fdbb0) - Handle more JSON errors gracefully when
JSON_PARTIAL_OUTPUT_ON_ERRORis set (#23410, 972b82a) - Add bubble, permission and locking config to single/daily log (#23439)
- Use
Str::contains()instead ofstr_contains()(ae4cb28)
Fixed
Added
- Added support for MySQL’s sounds-like operator (#23351)
- Added
ThrottleRequestsExceptionexception (#23358 - Added
@dumpBlade directive (#23364) - Added
Collection::whereInstanceOfMethod()(78b5b92) - Added
Dispatchable::dispatchNow()(#23399)
Changed
- Allow extension of
DatabaseNotificationmodel attributes (#23337) - Made auth scaffolding translatable (#23342)
- Use
getKeyName()ingetForeignKey()(#23362) - Sort
FileSystemfiles and directories by name (#23387) - Return validated data from
Validator::validate()(#23397, 3657d66)
Fixed
- Fixed
servecommand escaping (#23348) - Fixed an issue with multiple select statements in combination with
withCount()(#23357) - Fixed conditional loading issues (#23369)
- Prevent considering arrays as
callablewhile building model factories (#23372) - Move
tightenco/collectto Composer’sconflict(#23379) - Set up loop variable correctly on all
Traversableobjects (#23388, 49770ec) - Removed attribute filling from pivot model (#23401)
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
FormRequestServiceProvidertoRequest(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:listcommand (#23148) - Updated required Carbon version (201bbec)
- Improved
BadMethodCallExceptionmessages (#23232) - Support date validation rules when comparison has relative time (#23211)
Fixed
- Returns same
Loggerinstance fromLogManager(#23118) - Register missing
hash.driverDI (#23114) - Fixed an issue with starting two database transactions in tests (#23132)
- Don't replace
tightenco/collect(#23147, #23153, #23160) - Catch
InvalidFileExceptionwhen loading invalid environment file (#23149, 5695079) - Fixed an issue with
assertRedirect()(#23176) - Fixed dropdown accessibility (#23191)
- Fixed
--forceflag onGeneratorCommand(#23230)
Removed
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
BelongsToManypivot relation wakeup (#23081)
Removed
- Removed monolog configurator (#23078)
General
- ⚠️ Upgraded to Symfony 4 (#22450)
- ⚠️ Upgraded to Bootstrap 4 (#22754, #22494, 25559cd, 12d789d)
- ⚠️ Added
runningUnitTests()toApplicationcontract (#21034) - ⚠️ Upgraded
cron-expressionto2.x(#21637)
Artisan Console
- ⚠️ Removed deprecated
optimizecommand (#20851) - Show job id in
queue:workoutput (#21204) - Show batch number in
migrate:statusoutput (#21391) - ⚠️ Added
$outputBufferargument tocall()method in contracts (#22463) - Added
--realpathargument to migration commands (#22852, 98842da) - Added
--apiargument tomake:controller(#22996, dcc6123)
Authentication
- Support customizing the mail message building in
ResetPassword::toMail()(6535186) - Added
AuthServiceProvider::policies()method (6d8e530)
Blade Templates
- Added
@csrfand@methoddirectives (5f19844, #22912) - Added
Blade::component()method for component aliases (#22796, 7c3ba0e) - ⚠️ Made double encoding the default (7c82ff4)
Broadcasting
Cache
- Removed
$decayMinutesargument fromRateLimiter::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
ThrowableinDetectsLostConnections(#22948)
Eloquent
- ⚠️ Serialize relationships (#21229)
- Allow setting custom owner key on polymorphic relationships (#21310)
- ⚠️ Sync model after
refresh()(#21905) - Make
MassAssignmentExceptionwording clear (#22565) - Changed
HasAttributes::getDateFormat()visibility topublic(#22618) - Added
BelongsToMany::getPivotClass()method (641d087) - Ensure Pivot model's
$dateFormatis used when creating a pivot record (a433ff8) - Added
BelongsToMany::withPivotValues()method (#22867) - Added
forceDeletedevent (497a907) - ⚠️ Relocate the existence check for factory definitions to
FactoryBuilder::getRawAttributes()(#22936) - ⚠️ Change
Resourcename 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 withnull(#21745) - Return class traits in use order from
class_uses_recursive()(#22537) - Added
Str::uuid()andStr::orderedUuid()(3d39604)
Logging
- ⚠️ Refactored Logging component (#22635, 106ac2a, 7ba0c22, 03f870c, e691230)
- Use application name as syslog identifier (#22267)
- ⚠️ Added
$dataproperty 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()andgetJobId()toJobcontract (#21303) - Removed unused
Worker::raiseFailedJobEvent()method (#21901) - Support blocking pop from Redis queues (#22284, dbad055, 5923416)
Requests
- ⚠️ Return
falsefromexpectsJson()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
$rawand$sameSiteparameters toCookie\Factorymethods (#21553) - ⚠️ Return
201status if Model was recently created (#21625) - Set original response JSON responses (#22455)
- Added
streamDownload()method (#22777) - ⚠️ Allow insecure cookies when
session.secureistrue(#22812)
Routing
- Added
SetCacheHeadersmiddleware (#22389, f6f386b, df06357) - Support pulling rate limit from the user instance in
ThrottleRequests(c9e6100)
Service Container
Session
- Support dot notation in
Session::exists()(#22935)
Support
- ⚠️ Throw exception if
Manager::driver()is called withnull(#22018) - ⚠️ Added
hasCommandHandler(),getCommandHandler()andmap()toBus\Dispatchercontract (#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
DatabaseTransactionstrait inRefreshDatabase(#22596) - Added
assertSeeInOrder()andassertSeeTextInOrder()methods (#22915, #23038)
Validation
Added
- Added
Model::qualifyColumn()method (#22577) - Added support for the
author_*fields toSlackAttachment(#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()inCollection::get()(#22554) - Pass entire config to
FtpAdapter(#22539) - Support extending Eloquent relationships (#22617)
- Improved handling of
VerifyCsrfToken::$exceptvalues (#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
nullas default value foroptional()helper (#22699) - Make sure
getRememberToken()returns a string (#22724) - Updated Vue preset version (#22732)
- Accept
Arrayableitems inCollection::find()(#22787)
Fixed
- Close database connection when using
RefreshDatabasetrait (#22569) - Send status code
500when usingdd()(#22581) - Fixed parameter usage in
RedirectController(#22657) - Added
__set_state()method toSupport/Carbon(#22689) - Do not continue checking
APP_ENVif environment file path being set successfully with--envoption (#22753) - Fixed missing table prefix in
SQLiteGrammar::compileDropColumn()(#22745, c13322c) - Fixed prefixing in
SQLiteGrammar::compileColumnListing()(#22781)
Added
- Support passing collections to
Collection::except()(#22399) - Made
Commandclass macroable (#22426, #22434) - Added
ProcessUtilsclass for command argument escaping (#22448) - Added array support to
Optionalhelper class (#22417)
Changed
- Added "cattle" as an uncountable word (#22415)
- Added
Dispatchercontract onNotificationFakeand return fake object fromNotification::fake()(#22396) - Only add value as query binding if it isn't an
Expression(#22451)
Fixed
Added
- Added support for Flysystem caching (#22310, 0657496)
- Added support for
yeardata type (#22377) - Added support for setting Whoops debug editor (#22350, c6e3a73)
Changed
- Use
Model::newQueryWithoutRelationships()inCollection::load()(#22363) - Respect
schemaconfig inPostgresBuilder(#22365, de561cb)
Fixed
- Fixed SQS queue driver for PHP 7.2 (#22374)
Added
- Added a
Collection::firstWhere()method (#22261, #22264) - Added several accessors to
BelongsToMany(f09ea98, cbe8123, 3bcf9d1)
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
SELECTbindings from MySQL delete statements (#22285)
Added
- Added
response()anddownload()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
MEDIUMTEXTinstead ofTEXTfor database cache values (MySQL only) (#22091) - Include the name of the scheduled job in the output email subject (#22098)
- Support
Dblibversion config for SQL Server (#22102) - Set
Model::$existstofalsewhen force-deleting a model usingSoftDeletes(#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
HasManyThroughrelation with custom intermediate and local keys when used inwhereHas()(#22071, 3788cbd) - Fixed SQL Server handling of
DATETIMEcolumns (#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
passwordis the only specified field (#22167)
Removed
- Removed
betweenoperator from basic where clauses (#22182)
Added
- Added
TestResponse::assertJsonMissingExact()(#21881) - Added
assertValidationErrors()andassertJsonCount()toTestResponse(#21917) - Added
allOnQueue()andallOnConnection()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
SIGTERMin 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
@verbatimand@phpblocks (#21900) - Moved
InteractsWithRedistoIlluminate\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
BroadcastControllernamespace issue (#21844) - Fixed eager loading
HasManyThroughrelations with custom intermediate and local key (#21902) - Use table aliases when calling self-referencing
HasManyThroughrelation (#21883) - Fixed Vue component file name in React present (#21945)
- Reverted changes to
BadMethodExceptionin #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
Added
- Made
Redirectormacroable (#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)
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:modelcommand (#21549) - Added support for a
failed()method to mailables and notifications (#21585) - Added
__toStringonViewErrorBag(#21605) - Support higher order call of
keyBy()(#21606) - Generate
@else*directives forBlade::if()(#21611) - Made
ResponseandJsonResponsemacroable (#21669)
Changed
- Escape HTML characters in
@jsondirective (#21574) - Only accept strings in
Session::flash()(#21576) - Use message from
AuthenticationExceptioninHandler::unauthenticated()(#21575) - Don't use global scope while touching parent timestamp (#21604)
- Accept multiple middleware when defining middleware fluently (#21621)
- Bind
trueas1while preparing an SQL statement (#21623) - Ensure config load order across multiple installations (#21634)
- Pass previous exception to
AccessDeniedHttpExceptionandHttpException(#21645) - Unify Bootstrap preset (#21686, #21685)
Fixed
Added
- Allow testing anonymous notifiables (#21379)
- Add relation and model attributes on
RelationNotFoundException(#21426) - Allow passing a callback to
with()(#21445) - Added
PotentiallyMissinginterface toMissingValueclass (be7dccc) - Accept
$queuename onSchedule::job()(#21473) - Added callback and default parameter
whenLoaded()method (#21490) - Allow marking notifications as unread (#21497)
- Added
Collection::mapToDictionary()method (#21505) - Added
make:exceptioncommand (#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:publishoptions (#21412) - Extract
AnonymousResourceCollectioninto class to allow serialization (#21456) - Extract some methods from
ResourceintoConditionallyLoadsAttributestrait (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 isnull(#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
$callbackparameter ofArr::sort()optional (#21337) - Support setting custom
REMOTE_ADDRinMakesHttpRequests(#21351) - Changed visibility of
$outputto public on console events (#21356)
Fixed
Added
- Added
Route::respondWithRoute($name)method (#21299, 66c5e46) - Added
$strictparameter toTestResponse::assertJson()(#21301)
Changed
- Added "firmware" as an uncountable word (#21306)
- Allow
MorphTo::associate()acceptnull(#21318) - Changed
__()signature to matchTranslation::trans()(10c013c)
Fixed
- Add missing
driverparameter to doctrine connection (#21297)
Security
- Perform constant-time token comparison in
DatabaseUserProvider(#21320)
Fixed
- Fixed issue with routes sorting (https://github.com/laravel/framework/pull/21261)
Added
- Added
:inputplaceholder in validation error messages (#21175) - Added
@includeFirstBlade directive (#21172) - Allow setting column styles for tables in Artisan commands (#21169)
- Added
ValidatesRequests::extractInputFromRules()method (#21192) - Added
-mshortcut tomake:factory(#21219) - Added ability to set a fallback (catch-all) route (#21234)
Changed
- Support
nullonModel::UPDATED_AT(#21178) - Render views from config while building error views (#21145)
- Use multibyte functions in some
Strmethods (#21207) - Perform stable sort in
Collection::sortBy()(#21214)
Fixed
Added
- Added
Blueprint::spatialIndex()method (#21070) - Added support for SQL Server's
TransactionIsolationDSN 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
nullfromRoute::getAction()if$keyis not found (#21083) - Restore non-static signature of
Router::prepareResponse()(#21114, e1a1265) - Removed
Modeltype hint fromModel::isNot()(4d8f0a1) - Prefer
JsonableoverArrayableinJsonResponse::setData()(#21136) - Reset
ccandbccinMailer::setGlobalTo()(#21137) - Avoid trace
argsin JSON exceptions (#21149)
Fixed
- Fixed
@jsondirective parameter logic (2a25ee7) - Fixed a problem with
withoutExceptionHandling()when called more than once (#21086) - Added a
compileForeign()method toPostgresGrammar(#21038) - Reset the index after a
MissingValuewhile resolving resource (#21127) - Fixed
getQualifiedParentKey()onBelongsToManyrelationships (#21128) - Fixed parameters on
Route::view()when usingwhere()(#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
$actionparameter toRoute::getAction()for simpler access (#20975) - Added
@jsonblade directive (#21004) - Added
rescue()helper (#21010, 74ecb34, c4d1c47) - Support commas in
InandNotInparameters (#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
$thisfromValidator::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
decayMinutesis more than1(#20997) - Only use reflection on classes in
Kernel::load()(#20998) - Specify lower case
column_nameinMySqlGrammar::compileColumnListing()(#21037) - Fixed eager loading problem with
BelongsToMany(#21044)
Removed
Added
- Added
movextension andMimeType::search()method (#20917) - Added support for
dont-discoverin packages (#20921, 4a6f1f2) - Added
retrievedmodel event (#20852, 84291a6) - Added
HasOneOrMany::setForeignAttributesForCreate()method (#20871) - Made
Routemacroable (#20970)
Changed
- Load deferred providers before commands (366c50e)
- Don't pass cache instance to Schedule anymore (#20916, #20933)
- Simplified
mixrequire (#20929) - Return
nullif resource attribute contains relation with a null value (#20969)
Fixed
- Prevent
ErrorExceptioninCollection::operatorForWhere()method (#20913) - Create default console input/output in
Application::run()(#20922, 7647399) - Ignore abstract classes in
Kernel::load()(#20931) - Fixed
listener-queued-duck.stubfilename (#20937) - Fixed faking notification sending while using AnonymousNotifiable (#20965)
- Fixed
eachSpread()andmapSpread()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::$collectsvisibility topublic(#20885)
Fixed
- Fixed
choice()on non-tty terminals (#20840) - Fixed Macroable calls on
Optional(#20845, #20898) - Fixed
dropAllTables()when usingPDO::FETCH_ASSOCmode (#20859) - Pass model name to
ModelNotFoundException::setModel()(#20896, 891f90e) - Fixed
Basicauthentication (#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
buildscripts (7c16b15) - Upgraded to Symfony 3.3 components (4db7031, 67a5367)
- Throw
RuntimeExceptionwhen app key is missing (#19145, 8adbaa7)
Artisan Console
- Added interactive prompt to
vendor:publish(#18230) - Added
migrate:freshcommand (f6511d4, #20090) - Added
make:factorycommand and added--factorytomake:model(a6ffd8b, #19985) - Added
make:rulecommand (76853fd) - ⚠️ Added
runningInConsole()methodApplicationcontract (#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 offire()(#19827, #19839, #20024) - Try to guess the
--createoption when generation migrations (#20032) - Generate
make:policywith real user model namespace (#20047) - Added
Kernel::load()to auto register a directory of commands (2e7ddca, d607b9c) - ⚠️ Removed
arraytype hint fromCommand::table()(#20120) - Support loading multiple paths in
Kernel::load()(#20251, #20595) - Added
CommandStartingandCommandFinishedevents (#20298) - Show error message if a reverted migration is not found (#20499, a895b1e)
- Set correct namespace in model factories when using the
app:namecommand (#20766) - ⚠️ Switched the
-fshortcut from--forceto--factoryonmake:modelcommand (#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
RequestGuardoptional (d7f0b26) - Use
setRememberToken()inResetsPasswords(#19189) - Added a
PasswordResetevent (#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 toGatecontract (#19173) - ⚠️ Implement
iterableonGate::check()andGate::any()(#20084)
Blade Templates
- Added
Blade::if()method (71dfe0f, 2905364, #20025) - Added
@switch,@case,@breakand@defaultdirectives (#19758) - ⚠️ Prevent Blade from parsing PHP code inside
@phpblocks (#20065)
Broadcasting
- ⚠️ Use
AccessDeniedHttpExceptioninstead ifHttpException(#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
DatetimeInterfaceandDateIntervalin cache repository (#20034) - Added
getStore()method to cacheRepositoryinterface (#20338) - ⚠️ Made
RateLimiterless 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()andunwrap()methods (#20055, #20068) - Added keys to
partition(),eachSpread()andmapSpreadcallback (#20783, #20723)
Configuration
- Added
Config::getMany()method (#19770)
Controllers
Database
- ⚠️ Added
dropAllTables()to schema builder (#18484, d910bc8, #19644, #19645, #20239, #20536) - Added precision to
dateTimeandtimestampcolumn types (#18847, f85f6db, #18962, #20464) - Pass page number to
chunk()callback (#19316) - Improve memory usage in
chunk()andchunkById()(#19345, #19369, #19368) - Fixed
compileColumnListing()when using PostgreSQL with multiple schemas (#19553) - Allow the seeder to call multiple commands at once (#19912)
- Added pgpool message to
DetectsLostConnections(#20418) - Prevent race conditions on replicated databases (#20445, 0ec1522, 3824a36)
- ⚠️ Support sticky database connections (#20746)
Eloquent ORM
- Added API resources (#20710, too many follow-up commits)
- ⚠️ Indicate soft deleted models as existing (#17613)
- ⚠️ Added
$localKeyparameter toHasRelationships::belongsToMany()andBelongsToMany(#17903, 7c7c3bc) - ⚠️ Added
$parentKeyparameter tobelongsToMany(),BelongsToManyandMorphToMany(#17915, #18380) - ⚠️ Renamed
$parentproperty to$pivotParentinPivotclass (#17933, #18150) - ⚠️ Don't add
_countsuffix to column name when usingwithCount()with an alias (#17871) - ⚠️ Renamed
$eventsto$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
nullcomparison inModel::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()andfirstOrNew()(#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()andsyncChanges()(#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
Pivotmethods (8d82618) - Default
$attributesonBelongsToMany::create()to empty array (973bff4) - Add ability to set a custom pivot accessor (#20411)
- ⚠️ Call
setConnection()inModel::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()inEncrypter(#18684) - Added
Encrypter::generateKey()method (6623996) - Use
json_last_error()inEncrypter(#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
$dontReportinto$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
HttpExceptionwith code413fromPostTooLargeException(#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
- ⚠️ Removed calling queue method on handlers (0360cb1, ec96979, d9be4bf)
- Allow faking only specific events (#19429)
- Support self-registering event listeners (#19917, 4d557c5, #19962, 5ed4f50)
- Added ability to determine if queued handler should be pushed to queue (#19957, efe616c)
Filesystem
- ⚠️ Made
Storage::files()work likeStorage::allFiles()(#18874, 7073457) - ⚠️ Fixed compatibility between
FilesystemAdapterand theFilesysteminterface (#19389)
Helpers
- Added
report()helper (2b67619) - Added
throw_if()andthrow_unless()helpers (18bb4df, #19166, #19255) - Added
dispatch_now()helper (#18668, 61f2e7b) - Added
$languageparameter tostr_slug()helper (#19011) - Added
str_before()helper (#19940, #20049) - Added
now()andtoday()helpers (3c888b6, #20716) - Added
blank(),filled(),optional()andtransform()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 inmix()(#20603, bf0cb82)
Localization
- ⚠️ Moved
LoaderInterfaceto contracts (#20460) - ⚠️ Support loading JSON translation for packages (#20599, 573f85c)
- Support language specific characters in
Str(#18974, #19694)
- Allow mailables to be rendered directly to views (d9a6dfa)
- Allow for per-mailable theme configuration (b2c35ca)
- ⚠️ Removed
$dataand$callbackparameters fromMailerandMailQueue - ⚠️ Made
Markdowna dependency ofMailChannel(#19349) - ⚠️ Upgraded to SwiftMailer 6 (#19356)
- ⚠️ Added
to()andbcc()toMailercontract (#19955)
Notifications
- Added methods for Slack's
thumb_urlandunfurl_*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
$queueparameter fromQueue::createPayload()(#17948) - Made all
getQueue()methodspublic(#18501) - Pass connection and queue to
Loopingevent (#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
DatetimeInterfaceandDateIntervalin queue (#20102, 92e2aff) - ⚠️ Use
dispatch()instead offire()(#20446) - Removed
reserved_atindex from jobs table stub (#20702) - Support job expiration (#20776, 1592b9b)
Redis
- ⚠️ Several improvements on
PhpRedisConnection(#20269, #20316) - ⚠️ Removed
PhpRedisConnection::proxyToEval()method (#17360) - Added Redis limiters (#20597, ceb260e, #20761, aba76bf, 3684f0c, #20772)
Requests
- ⚠️ Made
Request::has()work likeCollection::has()(#18715) - Added
Request::filled()(#18715) - ⚠️ Made
Request::only()work likeCollection::only()(#18695) - Aliased
Request::exists()toRequest::has()(183bf16) - Allow passing keys to
Request::all()to behave like oldRequest::only()(#18754) - ⚠️ Removed
Request::intersect()(#18695) - Return request data from
ValidatesRequestscalls (#19033) - Added a
validate()macro ontoRequest(#19063) - Added
FormRequest::validated()method (#19112) - ⚠️ Made
request()helper andRequest::__get()consistent (a6ff272) - Made
Request::routeIs()work likeRequest()::fullUrlIs()(#19267, bfc5321, #19334) - Added
Request::hasAny()method (#19367) - ⚠️ Throw validation exception from
ValidatesRequestswithout 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
nullinstead of empty model instance (#17521) - Accept patterns on
Route::named(),Router::is()andRouter::currentRouteNamed()(#19267, bfc5321) - Added
domain()setter/getter toRoute(#19245, bba04a1) - Added
Route::redirect()method (#19794) - Added
Route::view()method (#19835) - ⚠️ Improved
ThrottleRequestsmiddleware (#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()andnames()methods (#20531, #20529) - Handle
HEADrequests inRouter::view()(#20672) - Added
ThrottleRequestsWithRedismiddleware (#20761, 0a10f9a)
Responses
- ⚠️ Ensure
ArrayableandJsonablereturn aJsonResponse(#17875) - ⚠️ Ensure
Arrayableobjects are also morphed byResponse(#17868) - Added
SameSitesupport toCookieJar(#18040, #18059, e69d722) - Accept
HeaderBaginResponseTrait::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
trueinStore::flash()(#18136) - ⚠️ Store the user password hash when logging in (#19843)
- ⚠️ Throw
UnauthorizedHttpExceptionfromfailedBasicResponse(#20673)
Support
- Autoload package providers (#19420, a5a0f3e, 2954091, #19455, #19561, #19646)
- Added support for
Responsableobjects (c0c89fd, 1229b7f, #19614, ef0e37d) - Made
Carbonmacroable and serializeable (#19771, #20568, 6a18209) - Support registering macros using classes (#19782, 353adbd)
- ⚠️ Moved
InteractsWithTimetoIlluminate\Support(#20119, #20206) - Support callable/invokable objects in
Pipeline(#18264) - ⚠️ Prevent access to protected properties using array access on
ModelandFluent(#18403) - ⚠️ Extend
MessageBaginterface fromArrayableand addgetMessages()method (#19768, #20334) - Handle
Arrayableitems inMessageBag(6f1f4d8) - Added
isNotEmpty()method to message bags and paginators (#19944) - Return the collection iterator from
AbstractPaginator::getIterator()(#20098) - ⚠️ Fixed minimum value of paginator
last_pagefield (#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()andskip()(1d1a96e)
Testing
- ⚠️ Switched to PHPUnit 6 (#17755, #17864)
- ⚠️ Renamed authentication assertion methods (#17924, 494a177)
- ⚠️ Unify database testing traits into
RefreshDatabasetrait (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
Carbonmock during tear down (#19934) - Added debug info to
NotFoundHttpExceptioninInteractsWithExceptionHandling(#20000) - Added
MailFake::assertSentTimes(),QueueFake::assertPushedTimes()andBusFake::assertDispatchedTimes()methods (#20485, e657f6e) - Added queue assertions to
MailFake(#20454, #20701) - Added
assertNothingSent()andassertSentTimes()methods toNotificationFake(#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
DateTimeInterfaceinstead ofDateTime(#20110) - ⚠️ Made several method in
ValidatesAttributespublic (#20200) - ⚠️ Added
errors()method toValidatorinterface (#20337) - Extend
ExistsandUniquerule fromDatabaseRuleclass (#20563) - Added
whereIn()andwhereNotIn()constraints toDatabaseRule(#20691, #20739, 52d28e3) - Added
date_equalsrule (#20646)
Views
Added
- Added
FilesystemAdapter::path()method (#20395)
Changed
- Allow
Collection::random()to return0items (#20396, #20402) - Accept options on
FilesystemAdapter::temporaryUrl()(#20394) - Sync
withoutOverlappingmethod onEventandCallbackEvent(#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
MakeAuthCommandtoAuthMakeCommand(#20216) - Don't use
asset()helper insidemix()(#20197) - Removed
arraytype-hint inBuilder::orWhereRaw()signature (#20234) - Added empty array default to
$attributesonBelongsToMany::create()(#20321) - Prepare for PHP 7.2 (#20258, #20330, #20336, #20378)
- Use
unsignedTinyInteger()injobs.stub(#20382)
Fixed
Added
- Added
ManagesFrequencies::twiceMonthly()method (#19874) - Added
RouteCollection::getRoutesByName()method (#19901) - Added
$expiresAtparameter toCallbackEvent::withoutOverlapping()(#19861) - Support keeping old files when testing uploads (#19859)
- Added
--forceoption tomake:mail,make:modelandmake:notification(#19932) - Added support for PostgreSQL deletes with
USESclauses (#20062, f94fc02) - Added support for CC and BBC on mail notifications (#20093)
- Added Blade
@authand@guestdirective (#20087, #20114) - Added option to configure MARS on SqlServer connections (#20113, c2c917c)
Changed
- Support object items in
Arr::pluck()(#19838, #19845) MessageBaginterface now extendsArrayable(#19849)- Made
Blueprintmacroable (#19862) - Improved performance for
Arr::crossJoin()(#19864) - Use the correct
Usermodel 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
InvalidPayloadExceptionerror message (#20143)
Fixed
Added
- Added
avg()andaverage()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
BelongsTorelations (#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
@yielddirective (#19643) - Support passing multiple fields to
differentvalidation rule (#19637) - Only dispatch the
MessageSentevent if mails should be sent (#19690) - Removed duplicate
/frompublic_path()(#19731) - Made
ThrottlesLoginsmore customizable (#19787) - Support PostgreSQL insert statements with
DEFAULT VALUES(#19804)
Fixed
- Fixed
BelongsTobug with incrementing keys (#19631) - Fixed PDO return value bug in
unprepared()(#19667) - Don't use
event()helper inHttp\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
roleattribute from forms in stubs (#19792)
Added
- Added
Event::nextRunDate()method (#19537, 09dd336) - Added null safe operator
<=>to query builder operators list (#19539) - Added
Macroabletrait toRequestGuard(#19569)
Changed
- Touch
updated_attimestamp when soft deleting (#19538) - Accept argument list in
Rule::in()andRule::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
ThrowabletostopWorkerIfLostConnection()(#19591)
Added
- Added
Macroabletrait toFactoryBuilder(#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
BadMethodCallExceptioninRedirectResponse::withErrors()(#19426) - Suppress error if calling
Str::replaceFirst()with an empty search (#19427) - Removed the
callabletype hint forarray_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
Mailableclass (#19504) - Prevent error notice when
database.collationis not set (#19507)
Added
- Support magic controller methods (#19168)
- Added
Gateresources (#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
pathtoPaginator(#19314) - Added
Collection::concat()method (#19318, 0f5337f) - Added
make()method toHasOneOrManyandMorphOneOrManyrelations (#19307) - Added
str_after()helper function (#19357) - Added
Router::apiResource()method (#19347)
Changed
- Move
$sizeRulesand$numericRulesproperties fromFormatsMessagestoValidator(dc7e7cb) - Allows calls to
Collection::times()without the$callbackparameter (#19278) - Don't ignore jobs with a timeout of
0(#19266) - Resolve database paginators from the container (#19328)
- Added
newstoPluralizer::$uncountable()(#19353) - Switched to using
app()->getLocale()inapp.stub(#19405)
Fixed
- Fixed
Container::makeWith()not using parameters when resolving interfaces (#19178) - Stop validating Memcached connection (#19192)
- Fixed the position of
bound()inContainer::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
0fromcallScope()if$query->wheresisnull(#19381)
Added
- Added
Gate::abilities()accessor (#19143, e9e34b5) - Added ability to eager load counts via
$withCountproperty (#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.Laravelobject (#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
Arrayableon Eloquent'sfind()method (#19019) - Added
SendsPasswordResetEmails::validateEmail()method (#19042) - Allow factory attributes to be factory instances themselves (#19055)
- Implemented
until()method onEventFake(#19062) - Added
$encodingparameter toStr::length()(#19047, #19079)
Changed
- Throw exception when invalid first argument is passed to
cache()helper (d9459b2) - Use
getAuthIdentifierName()inAuthenticatable::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()inassertJsonStructure()(#19090)
Added
- Added higher order tap (3abc4fb)
- Added
Collection::mapToGroups()(#18949) - Added
FactoryBuilder::lazy()method (#18823) - Support Redis Sentinel configuration (#18850)
- Added
queue.prefixoption (#18860, 8510bf9) - Allow
getDisplayableAttribute()to be used in custom replacers (#18895) - Added
resourceMethodsWithoutModels()method toAuthorizesRequests(#18916, #18964) - Added name to
homeroute (#18942)
Changed
- Return
PendingDispatchforKernel::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_ERRORonJsonResponse(#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 isnull(#18921) - Use protocol-relative URL in
mix()helper (#18943) - Cast
$viaChannelsto array (#18960)
Added
- Added ability to send
link_namesparameter in Slack notification (#18765) - Added
Mailable::hasFrom()method (#18790)
Changed
- Made
Mailermacroable (#18763) - Made
SessionGuardmacroable (#18796) - Improved queue worker output (#18773)
- Added
newModelInstance()method to Eloquent Builder (#18775) - Use assertions instead of exceptions in
MocksApplicationServices(#18774)
Fixed
Added
- Added
assertSuccessful()andassertRedirect()toTestResponse(#18629) - Added
assertSeeText()andassertDontSeeText()toTestResponse(#18690) - Added
assertJsonMissing()toTestResponse(#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
--parentoption onmake:controller(#18606) - Added
MessageSentevent toMailer(#18744, 6c5f3a4)
Changed
- Don't trim leading slashes on local filesystem base URLs (acd66fe)
- Accept variable on
@empty()directive (#18738) - Added
stringvalidation rules toAuthenticatesUsers(#18746)
Fixed
Added
- Added
getManager()andsetManager()to queue worker (#18452) - Added support for Pheanstalk's
$timeoutand$persistentoptions (#18448) - Added
Collection::times()method (#18457) - Added PostgreSQL's
REALdata type (#18513) - Added
flatMapto collection higher order proxies (#18529) - Support multiple
--pathparameters withmigrate:reset(#18540) - Store SparkPost
Transmission-IDin the header after sending message (#18594)
Changed
- Check for
Htmlableinstead ofHtmlStringinMailer::renderView()(#18459, da7b006) - Added mutex for schedule events (#18295, ae2eb1f)
- Don't use helper functions in service providers (#18506, #18521)
- Change
user_idto unsigned integer in database session stub (#18557) - Improved performance of
UrlGenerator::isValidUrl()(#18566)
Fixed
- Handle missing or malformed
config/app.phpfile (#18466, 92931cf) - Only call
upanddownon 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()inTestResponse::assertRedirect()(#18559) - Case
parseIds()to array inInteractsWithPivotTable::sync()(#18547) - Preserve route parameter names (#18604)
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
MessageSendingreturnsfalse(#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(), andexecuteRaw()toPhpRedisConnection(#18421) - Added
@isset()directive (#18425) - Added
tinyIncrements()database schema method (#18424)
Changed
- Throw exception when
bootstrap/cachedirectory is not writable (#18188, b4f0005) - Use
resource_path()helper inMakeAuthCommand(#18215) - Added
file_exists()check toEvent::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
idin failed jobs migration stub tobigIncrements()(#18300) - Prevent
make:authfrom 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
ClosureinorWhereHas()(#18277) - Let PHP parse
@includeWhendirective (#18285) - Only include
.phpfiles when loading database factories (#18336) - Fixed PHP 5.6 issue in
FileFactory::generateImage()(#18345) - Allow
ImplicitRouteBindingto match camelcase method parameter names (#18307, 4ae31a1) - Fixing weird behaviour of
Connection::getConfig()whennullwas passed (#18356) - Attempt to solve an issue with using
required_*rules while theConvertEmptyStringToNullmiddleware 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)