Laravel 5.8 continues the improvements made in Laravel 5.7 by introducing has-one-through Eloquent relationships, improved email validation, convention based automatic registration of authorization policies, DynamoDB cache and session drivers, improved scheduler timezone configuration, support for assigning multiple authentication guards to broadcast channels, PSR-16 cache driver compliance, improvements to the artisan serve command, PHPUnit 8.0 support, Carbon 2.0 support, Pheanstalk 4.0 support, and a variety of other bug fixes and usability improvements.
At July 17, the Laravel team released v5.8.29 which includes a few new features, performance improvement to MorphTo relationships, and a few bug fixes. One from the new features worth mentioning here is the ability to pass an array of columns to whereNull and whereNotNull. Previously, you have to write these code before:
$query->whereNull('id')->whereNull('expires_at');
$query->whereNotNull('id')->whereNotNull('expires_at');
With this update, this code could be simplified to:
$query->whereNull(['id', 'expires_at']);
$query->whereNotNull(['id', 'expires_at']);
Laravel v5.8.29 Full Changelog
Added
- Added possibility for
WithFaker::makeFaker()
use localapp.faker_locale
config (#29123) - Added ability to set a theme for mail notifications (#29132)
- Added runtime for each migration to output (#29149)
- Added possibility for
whereNull
andwhereNotNull
to accept array columns argument (#29154) - Allowed
Console\Scheduling\ManagesFrequencies::hourlyAt()
to accept array of integers (#29173)
Performance
- Improved eager loading performance for MorphTo relation (#29129)
Fixed
- Fixed
Builder::whereDay()
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)