- 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
--parent
option onmake:controller
(#18606) - Added
MessageSent
event toMailer
(#18744, 6c5f3a4)
- Don't trim leading slashes on local filesystem base URLs (acd66fe)
- Accept variable on
@empty()
directive (#18738) - Added
string
validation rules toAuthenticatesUsers
(#18746)
- Fixed an issue with
Collection::groupBy()
when the provided value is a boolean (#18674) - Bring back an old behaviour in resolving controller method dependencies (#18646)
- Fixed job release when exception occurs (#18737)
- Fixed eloquent
increment()
anddecrement()
update attributes (#18739, 1728a88)
- Added
getManager()
andsetManager()
to queue worker (#18452) - Added support for Pheanstalk's
$timeout
and$persistent
options (#18448) - Added
Collection::times()
method (#18457) - Added PostgreSQL's
REAL
data type (#18513) - Added
flatMap
to collection higher order proxies (#18529) - Support multiple
--path
parameters withmigrate:reset
(#18540) - Store SparkPost
Transmission-ID
in the header after sending message (#18594)
- Check for
Htmlable
instead ofHtmlString
inMailer::renderView()
(#18459, da7b006) - Added mutex for schedule events (#18295, ae2eb1f)
- Don't use helper functions in service providers (#18506, #18521)
- Change
user_id
to unsigned integer in database session stub (#18557) - Improved performance of
UrlGenerator::isValidUrl()
(#18566)
- Handle missing or malformed
config/app.php
file (#18466, 92931cf) - Only call
up
anddown
on migration if the method exists (d27d94e) - Fixed overwriting of routes with identical path and method (#18475, 5aee967)
- Fixing model/route binding with identical name (#18476)
- Allow
rollbackMigrations()
path to be with string (#18535) - Use
getStatusCode()
inTestResponse::assertRedirect()
(#18559) - Case
parseIds()
to array inInteractsWithPivotTable::sync()
(#18547) - Preserve route parameter names (#18604)
- Added PHPDBG detection to
runningInConsole()
(#18198) - Added
Arr:wrap()
method (#18216) - Allow scheduling of queued jobs (#18235, 7bb67e2)
- Allow skipping mail sending if a listener to
MessageSending
returnsfalse
(#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)
- Throw exception when
bootstrap/cache
directory 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
id
in failed jobs migration stub tobigIncrements()
(#18300) - Prevent
make:auth
from overwriting existing views (#18319, bef8f35) - Ensure Mailable view data is not overridden by order of operations (#18322)
- Use
getAuthIdentifier()
method in broadcasters (#18351) - Use atomic cache operation when checking for event overlaps (8ebb5b8)
- Return pretty JSON response from
HasInDatabase::failureDescription()
(#18377) - Allow Validator extension to use array-style callable (#18399)
- Pass the condition value to query builder's
when()
method (#18419) - Don't require returning the query from
when()
method (#18422)
- Fixed an issue with slots when passed content equals
null
(#18246) - Do require
Closure
inorWhereHas()
(#18277) - Let PHP parse
@includeWhen
directive (#18285) - Only include
.php
files when loading database factories (#18336) - Fixed PHP 5.6 issue in
FileFactory::generateImage()
(#18345) - Allow
ImplicitRouteBinding
to match camelcase method parameter names (#18307, 4ae31a1) - Fixing weird behaviour of
Connection::getConfig()
whennull
was passed (#18356) - Attempt to solve an issue with using
required_*
rules while theConvertEmptyStringToNull
middleware is applied (#18376) - Fixed faking of model events (d6cb75c)
- Prevent model event result from firing observable events (#18401, 0607db0)
- Fix issue in
authorizeResource()
with compound names (#18435)
- Made queue worker properties
$shouldQuit
and$paused
public (e40c0e7)
- Proxy
isset()
checks onTestResponse
(#18182)
- Added
Str::kebab()
andkebab_case()
helper (#18084) - Added
Route::getActionMethod()
(#18105) - Support granular
$tries
and$timeout
onMailable
(#18103) - Added context to the
assertJson()
response (#18166, da2c892) - Add
whereNotIn()
andwhereNotInStrict()
toCollection
(#18157)
- Create
TestResponse
using composition instead of inheritance (#18089) - Changed visibility of
Pivot::$parent
fromprotected
topublic
(#18096) - Catch Sqlite3 deadlocks in
DetectsDeadlocks
(#18107) - Use
fromRawAttributes()
when inModel::newPivot()
(#18127, 063e5ae) - Use default connection in
DatabaseManager::purge()
when no connection name is provided (#18128) - Convert rule objects only once to string (#18141)
- Respect
ShouldQueue
contract inMailer::send()
(#18144, 717f1f6, #18160)
- Don't use
value()
helper inBoundMethod
class (#18075) - Don't require manifest file when running
npm run hot
(#18088) - Fixed injection placement of dependencies for routing method parameters (#17973)
- Return
false
fromModel::fireModelEvent()
if custom model event returnsfalse
(c5a6290) - Fixed
firstOrFail()
on relation setting the wrong model onModelNotFoundException
(#18138) - Fixed
RateLimiter
setting initial attempts count to2
(#18139) - Fixed compiled
DELETE
query when usingJOIN
with aliases (#18156, e09b9eb) - Fixed validating
present
in combination withnullable
(#18173)
- Add
$default
parameter toCollection::when()
method (#17941) - Support
--resource
argument onmake:model
command (#17955) - Added
replaceDimensions()
for validator messages (#17946, b219058) - Allow Slack notifications to use image urls (#18011)
- Added
@includeWhen($condition, $view, $data)
directive (#18047)
- Prevent Blade from compiling statements inside comments (#17952)
- Don't flash empty array to session, if
withInput()
is given empty array (#17979) - Use the pagination translation strings in paginator templates (#18009)
- Use
getAuthPassword()
method inAuthenticateSession
middleware (#17965) - Return
null
fromGate::getPolicyFor()
if given class is not a string (#17972) - Add missing methods to the
Job
interface (#18034) - Improved PostgreSQL table existence check (#18041)
- Allow
getActualClassNameForMorph()
used bymorphInstanceTo()
to be overridden (#18058)
- Fixed
@lang
directive when used with JSON file (#17919, 2bd35c1) - Improved image
dimensions
validation rule (#17943, #17944, #17963, #17980) - Fixed
$willBeAvailableAt
having the wrong time if using$retryAfter
inMaintenanceModeException
(#17991) - Trim spaces while collecting section name (#18012)
- Fixed implementation of
SqsQueue::size()
(#18037) - Fixed bug in
PasswordBroker::deleteToken()
(#18045) - Fixed route parameters binding (#17973)
- Allow configuration of Faker locale through
app.faker_locale
config (#17895) - Added
when()
method toCollection
class (#17917) - Check for files in
request()
helper (e08714d, 18d1648) - Added
TestResponse::assertSessionHasErrors()
method (dbaf3b1)
- Prevent duplication of embedded files in
Mail\Message
(#17877) - Only unserialize data if needed in
CallQueuedListener
(964fb7f) - Made a couple of properties public (614b94a)
- Handle
Model
instances inAuthorize
middleware (#17898) - Use
asset()
helper inapp.stub
(#17896) - Test PhpRedis connection if extension is loaded (#17882, #17910)
- Use
Carbon::setTestNow()
in all tests (#17937)
- Make sub select union queries work with SQLite (#17890)
- Fix
zRangeByScore()
options syntax for PhpRedis (#17912)
- Support
Encrypt
andTrustServerCertificate
options on SqlServer connections (#17841) - Support custom pivot models in
MorphToMany::newPivot()
(#17862) - Support
Arrayable
objects in Eloquent'swhereKey()
method (#17812)
- Use
app.locale
lang attribute inapp.stub
(#17827) - Throw
JsonEncodingException
when JSON encoder fails to encode eloquent attribute (#17804, 11e89f3) - Ensure file
hashName()
is unique (#17879, 830f194)
- Added missing
Str
class import toTestResponse
(#17835) - Fixed PhpRedis’
zadd()
method signature (#17832)
- Added Blade
@prepend
directive (#17696) - Added
Collection::tap()
method (#17756) - Allow multiple manifest files for
mix()
helper (#17759) - Adding facility to
Log:useSyslog()
(#17789) - Added macros to Eloquent builder (#17719)
- Added
TestResponse::assertJsonFragment()
method (#17809)
- Use
route()
helper instead ofurl()
in authentication component (#17718) - Ensure that the
map()
method exists before calling inRouteServiceProvider::loadRoutes()
(#17784) - Clean up how events are dispatched (8c90e7f, c9e8854)
- Changed job
name
todisplayName
(4e85a9a, d033626) - Made plain string job payloads more similar to object based payloads (bd49288)
- Bring back pluralization rules for translations (#17826)
- Apply overrides in
factory()->raw()
method (#17763)
- Added
Macroable
trait toTestResponse
(#17726) - Added container alias for the Redis connection instance (#17722)
- Added
raw()
method toFactoryBuilder
(#17734) - Added
json()
as alias fordecodeResponseJson
method onTestResponse
(#17735)
- Use
route()
helper instead ofurl()
in authentication component (#17718) - Added
Jedi
to uncountable list for pluralization (#17729) - Return relative URL from
mix()
helper (#17727) - Sort foreign keys on eloquent relations (#17730)
- Properly set the JSON payload of
FormRequests
instead of re-building it (#17760, 2d725c2) - Use
isset()
instead ofarray_key_exists()
inHasAttributes::getAttributeFromArray()
(#17739)
- Added missing
sleep
option toqueue:listen
(59ef5bf) - Switched to strict comparison
TrimStrings
middleware (#17741)
- Added
TestResponse::assertJsonStructure()
(#17700) - Added
Macroable
trait to EloquentRelation
class (#17707)
- Move
shouldKill()
check fromdaemon()
tostopIfNecessary()
(8403b34) - Removed
isset()
check fromvalidateSame()
(#17708)
- Added
force
option toqueue:listen
signature (#17716) - Fixed missing
return
inHasManyThrough::find()
andHasManyThrough::findMany()
(#17717)
- Added
Illuminate\Support\Facades\Schema
tonotifications.stub
(#17664) - Added support for numeric arguments to
@break
and@continue
(#17603)
- Use
usesTimestamps()
in Eloquent traits (#17612) - Default to
null
if amount isn't set infactory()
helper (#17614) - Normalize PhpRedis GET/MGET results (#17196)
- Changed visibility of
Validator::addRules()
fromprotected
topublic
(#17654) - Gracefully handle
SIGTERM
signal in queue worker (b38ba01, 819888c) - Support inspecting multiple events of same type using
Event
fake (55be2ea) - Replaced hard-coded year in plain-text markdown emails (#17684)
- Made button component in plain-text markdown emails easier to read (#17683)
- Set
Command::$name
inCommand::configureUsingFluentDefinition()
(#17610) - Support post size
0
(unlimited) inValidatePostSize
(#17607) - Fixed method signature issues in
PhpRedisConnection
(#17627) - Fixed
BelongsTo
not accepting id of0
in foreign relations (#17668) - Support double quotes with
@section()
(#17677) - Fixed parsing explicit validator rules (#17681)
- Fixed
SessionGuard::recaller()
when request isnull
(#17688, 565456d) - Added missing
force
andtries
options forqueue:listen
(#17687) - Fixed how reservation works when queue is paused (9d348c5)
- Generate non-existent models with
make:controller
(#17587, 382b78c) - Added
TestResponse::dump()
method (#17600)
- Switch to
ViewFactory
contract inMail/Markdown
(#17591) - Use implicit binding when generating controllers with
make:model
(#17588) - Made PhpRedis method signatures compatibility with Predis (#17488)
- Use
config('app.name')
inmarkdown/message.blade.php
(#17604) - Use
getStatusCode()
instead ofstatus()
inTestResponse::fromBaseResponse()
(#17590)
- Fixed loading of
.env.testing
when running PHPUnit (#17596)
- Fixed database session data not persisting (#17584)
- Add
hasMiddlewareGroup()
andgetMiddlewareGroups()
method toRouter
(#17576)
- Fixed
--database
option onmigrate
commands (#17574) - Fixed
$sequence
being always overwritten inPostgresGrammar::compileInsertGetId()
(#17570)
- Removed various unused parameters from view compilers (#17554)
- Removed superfluous
ForceDelete
extension fromSoftDeletingScope
(#17552)
- Moved
$forElseCounter
property fromBladeCompiler
toCompilesLoops
(#17538)
- Fixed bug in
Router::pushMiddlewareToGroup()
(1054fd2) - Fixed indentation in
Notifications/resources/views/email.blade.php
(0435cfc)
- Fixed removal of reset tokens after password reset (#17524)
- Fixed view parent placeholding (64f7e9c)
- Added real-time facades 😈 (feb52bf)
- Added
retry()
helper (e3bd359, 52e9381) - Added
array_wrap()
helper function (0f76617) - Added default 503 error page into framework (855a8aa, #16848)
- Added
Encrypter::encryptString()
to bypass serialization (9725a8e) - Removed compiled class file generation and deprecated
ServiceProvider::compiles()
(#17003, 733d829) - Renamed
DetectEnvironment
toLoadEnvironmentVariables
(c36874d) - Switched to
::class
notation across the codebase (#17357)
- Secured password reset tokens against timing attacks and compromised databases (#16850, 9d674b0)
- Refactored authentication component (7b48bfc, 5c4541b)
- Added names to password reset routes (#16988)
- Stopped touching the user timestamp when updating the
remember_token
(#17135)
- Consider interfaces and extended classes in
Gate::resolvePolicyCallback()
(#15757)
- Added Blade components and slots (e8d2a45, a00a201)
- Refactored Blade component (7cdb6a6, 5e394bb)
- Refactored View component (#17018, bb998dc)
- Refactored Blade
@parent
compilation (#16033, 16f72a5) - Added support for translation blocks in Blade templates (7179935)
- Don't reverse the order of
@push
ed data (#16325) - Allow view data to be passed Paginator methods (#17331)
- Add
mix()
helper method (6ea4997) - Escape inline sections content (#17453)
- Added model binding in broadcasting channel definitions (#16120, 515d97c)
- Added
Dispatchable::broadcast()
0fd8f8d - Switched to broadcasting events using new style jobs (#17433)
- Added
RedisStore::add()
to store an item in the cache if the key doesn't exist (#15877) - Added
cache:forget
command (#16201, 7644977) - Refactored cache events (b7454f0, #17120)
Cache::flush()
now returns boolean (#15831, 057492d)
- Added higher-order messages for the collections (#16267, e276b3d, 2b7ab30, #16274, 724950a, #17000)
- Allow collection macros to be proxied (#16749)
- Added operator support to
Collection::contains()
method (#16791) - Renamed
every()
method tonth()
and added newevery()
to determine if all items pass the given test (#16777) - Allow passing an array to
Collection::find()
(#16849) - Always return a collection when calling
Collection::random()
with a parameter (#16865) - Don't renumber the keys and keep the input array order in
mapWithKeys()
(#16564)
- Added
--model
tomake:controller
command to generate resource controller with type-hinted model (#16787) - Require confirmation for
key:generate
command in production (#16804) - Added
ManagesFrequencies
trait (e238299) - Added
Queueable
to queued listener stub (dcd64b6) - Switched from file to cache based Schedule overlap locking (#16196, 5973f6c)
- Changed namespace generation in
GeneratorCommand
(de9e03d) - Added
Command::$hidden
andScheduleFinishCommand
(#16806) - Moved all framework command registrations into
ArtisanServiceProvider
(954a333, baa6054, 87bd2a9) - Support passing output buffer to
Artisan::call()
(#16930) - Moved
tinker
into an external package (#17002) - Refactored queue commands (07a9402, a82a25f, f2beb2b)
- Allow tasks to be scheduled on weekends (#17085)
- Allow console events to be macroable (#17107)
- Added
Container::factory()
method to the Container contract (#15430) - Added support for binding methods to the container (#16800, 1fa8ea0)
- Trigger callback when binding an extension or resolving callback to an alias (c99098f)
- Support contextual binding with aliases (c99098f)
- Removed
$parameters
fromApplication::make()
andapp()
/resolve()
helpers (#17071, #17060) - Removed
Container::share()
(1a1969b) - Removed
Container::normalize()
(ff993b8)
- Refactored all database components (too many commits, sorry)
- Allow rolling back to a given transaction save-point (#15876)
- Added
$values
parameter toBuilder::firstOrNew()
(#15567) - Allow dependency injection on database seeders
run()
method (#15959) - Added support for joins when deleting deleting records using SqlServer (#16618)
- Added collation support to
SQLServerGrammar
(#16227) - Don't rollback to save-points on deadlock (nested transaction) (#15932)
- Improve
Connection::selectOne()
performance by switching toarray_shift()
(#16188) - Added
having()
shortcut (#17160) - Added customer connection resolver (#17248)
- Support aliasing database names with spaces (#17312)
- Support column aliases using
chunkById()
(#17034) - Execute queries with locks only on write connection (#17386)
- Added
compileLock()
method toSqlServerGrammar
(#17424)
- Refactored Eloquent (too many commits, sorry)
- Added support for object-based events for native Eloquent events (e7a724d, 9770d1a)
- Added custom class support for pivot models (#14293, 5459777)
- Use the model's primary key instead of
id
inModel::getForeignKey()
(#16396) - Made
date
anddatetime
cast difference more explicit (#16799) - Use
getKeyType()
instead of$keyType
inModel
(#16608) - Only detach all associations if no parameter is passed to
BelongsToMany::detach()
(#16144) - Return a database collection from
HasOneOrMany::createMany()
(#15944) - Throw
JsonEncodingException
whenModel::toJson()
fails (#16159, 0bda866) - Default foreign key for
belongsTo()
relationship is now dynamic (#16847) - Added
whereKey()
method (#16558) - Use parent connection if related model doesn't specify one (#16103)
- Enforce an
orderBy
clause forchunk()
(#16283, #16513) - Added
$connection
parameter tocreate()
andforceCreate()
(#17392)
- Removed event priorities (dbbfc62, #17245, f83edc1)
- Allow queued handlers to specify their queue and connection (fedd4cd)
- Converted
locale.changed
event intoLocaleUpdated
class (3385fdc) - Unified wording (2dcde69)
- Allow chaining queueable methods onto trait dispatch (9fde549)
- Removed
Queueable
trait from event listeners subs (2a90ef4)
- Use UUID instead of
md5()
for generating file names inFileHelpers
(#16193) - Allow array of options on
Filesystem
operations (481f760)
- Refactored session component (66976ba, d9e0a6a)
- Added
Illuminate\Http\Request\Concerns
traits (4810e9d) - Use variable-length method signature for
CookieJar::queue()
(#16290, ddabaaa) - Added
FormRequestServiceProvider
(b892805) - Renamed
Http/Exception
namespace toHttp/Exceptions
(#17398) - Renamed
getJsonOptions()
togetEncodingOptions()
onJsonResponse
(e689b2a) - Renamed
VerifyPostSize
middleware toValidatePostSize
(893a044) - Converted
kernel.handled
event intoRequestHandled
class (43a5e5f) - Throw
AuthorizationException
inFormRequest
(1a75409) - Use
Str::random
instead of UUID inFileHelpers
(#17046) - Moved
getOriginalContent()
toResponseTrait
(#17137) - Added JSON responses to the
AuthenticatesUsers
andThrottlesLogins
(#17369) - Added middleware to trim strings and convert empty strings to null (f578bbc)
- Added
LogServiceProvider
to defer loading of logging code (#15451, 6550153, #15794) - The
Log
facade now usesLoggerInterface
instead of the log writer (#15855) - Converted
illuminate.log
event intoMessageLogged
class (57c82d0)
- Added support for Markdown emails and notifications (#16768, b876759, cd569f0, 5325385)
- Refactored Mail component and removed
SuperClosure
dependency (50ab994, 5dace8f) - Allow
Mailer
to emailHtmlString
objects (882ea28) - Added
hasTo()
,hasCc()
andhasBcc()
toMailable
(fb29b38)
- Added
NotificationSender
class (5f93133) - Removed
to
andcc
from mailMailMessage
(ff68549) - Add salutation option to
SimpleMessage
notification (#17429)
- Support job-based queue options (#16257, 2382dc3, ee385fa)
- Fixed manually failing jobs and added
FailingJob
class (707a3bc, 55afe12) - Converted
illuminate.queue.looping
event intoLooping
class (57c82d0) - Refactored Queue component (9bc8ca5, e030231, a041fb5, 7bb15cf, 5505728, fed36bd)
- Refactored how queue connection names are set (4c600fb)
- Let queue worker exit ungracefully on
memoryExceeded()
(#17302) - Support pause and continue signals in queue worker (827d075)
- Added support for PhpRedis (#15160, 01ed1c8, 1ef8b9c)
- Added support for multiple Redis clusters (#16696, 464075d)
- Added
RedisQueue::laterRaw()
method (7fbac1c) - Return migrated jobs from
RedisQueue::migrateExpiredJobs()
(f21e942) - Send full job back into
RedisQueue
(16e862c)
- Added support for fluent routes (#16647, #16748)
- Removed
RouteServiceProvider::loadRoutesFrom()
(0f2b3be) - Allow route groups to be loaded directly from a file (#16707, #16792)
- Added named parameters to
UrlGenerator
(#16736, ce4d86b) - Refactored Route component (b75aca6, 9d3ff16, c906ed9, 0f7985c, 0f7985c, 3f4221f)
- Refactored Router component (eecf6ec, b208a4f, 21de409, e75730e)
- Refactored Router URL generator component (39e8c83, 098da0d)
- Removed
RouteDependencyResolverTrait::callWithDependencies()
(f7f13fa) UrlGenerator
improvements (f0b9858, 4f96f42)- Compile routes only once (c8ed0c3, b11fbcc)
- Simplified built-in testing for Dusk (#16667, 126adb7, b6dec26, 939264f)
- Improve database testing methods (#16679, 14e9dad, f23ac64)
- Refactored
MailFake
(b1d8f81) - Namespaced all tests (#17058, #17148)
- Allow chaining of response assertions (#17330)
- Return
TestResponse
fromMakesHttpRequests::json()
(#17341) - Always return collection from factory when
$amount
is set (#17493)
- Added JSON loader for translations and
__()
helper (#16424, #16470, 9437244) - Replaced Symfony's translator (#15563)
- Added
namespaces()
method to translation loaders (#16664, fe7bbf7) - Switched to
trans()
helper inAuthenticatesUsers
(#17202)
- Refactored Validation component (#17005, 9e98e7a, 9b817f1)
- Removed files hydration in
Validator
(#16017) - Added IPv4 and IPv6 validators (#16545)
- Made
date_format
validation more precise (#16858) - Add place-holder replacers for
*_or_equal
rules (#17030) - Made
sometimes()
chainable (#17241) - Support wildcards in
MessageBag::first()
(#15217) - Support implicit keys in
MessageBag::first()
andMessageBag::first()
(#17001) - Support arrays with empty string as key (#17427)
- Add type check to
validateUrl()
(#17504)