laravel 5.3 is planned to be released in June 2016 , this article is a rundown of the considerable number of things you can expect in this release . currently laravel 5.3 is in development .
Implicit controller routes have been removed
Using Route::controller
is no longer available in 5.3, the reasons for that change are stated in Pull Request #10777, here’s part of it:
This method has quite a lot of issues and also makes routes definitions confusing as they are not directly referenced in routes file. This sometimes may lead to unexpected route definitions (e. g. if method like getFilesystem is added to parent or trait – developer mistake, but may be unnoticed).
It’s more likely that this method will be available as a package, so it’s up to you to decide if you’re going to keep using it or switch to using explicit route definitions, however if you decided to switch it’s better to start now.
The Query Builder returns a collection
As of 5.3, the query builder get()
method will return an Illuminate\Support\Collection
instead of an array. The Pros of such change, as listed by the PR creator, are:
- Makes it consistent with Eloquent. You’ll find countless questions on StackOverflow asking why some collection method can’t be called on a query builder result.
- It’s just much cleaner than this: collect(DB::table(‘posts’)->get()). Laravel prides itself on making all these tiny interactions more enjoyable. This should not be any different.
- Native PHP arrays are just useless.
So if you’re expecting an array out of DB::get()
anywhere in your application or tests you’ll need to update your calls to be DB::get()->all()
instead.
Removed functions
Str::randomBytes
andStr::equals
are removed in favour of the native PHP methodsrandom_bytes()
andhash_equals()
.- The
lists()
method is also removed from ELoquent Builder, Query Builder, and Collections. You may use thepluck()
method directly. array_build()
helper is also removed from the framework as it’s no longer used anywhere in the core.- Model’s
withHidden()
method is removed in favour ofmakeVisible()
, same goes for Eloquent Collection’swithHidden()
. So in order for you to make certain fields visible after defining them as hidden using the Model’shidden
property, you’ll need to usemakeVisible()
. - The
Collection::whereLoose()
method was removed sinceCollection::where()
now supports operators.
New validate() method in Validator
The new method will throw a ValidationException
if the Validations fails, here are the different ways you can use this method:
Using the Validation factory:
$validator = Validator::make($data, $rules);
$validator->validate();
Or on the Validator directly:
Validator::validate($data, $rules);
Or using the helper method:
validator($data, $rules)->validate();
Collection::where() accepts operators
In laravel 5.3 you’re able to filter a collection using where()
via operators, and also a major change is that the method performs a loose comparison when not given any operators:
$collection = collect([['score' => '3'], ['score' => 3]]);
// Loose comparison by default
$collection->where('score', 3);
// returns [['score' => '3'], ['score' => 3]]
$collection->where('score', '=', 3);
$collection->where('score', '==', 3);
// returns [['score' => '3'], ['score' => 3]]
$collection->where('score', '===', 3);
// returns [['score' => 3]]
Here’s a list of all the operators you can use:
=
==
===
<=
>=
<
>
<>
!=
!==
With these operators available, the whereLoose()
method was removed from the collection class as it’s not needed anymore.
Model::firstOrCreate() accepts additional values
With this change you’ll be able to do something like:
$user = User::firstOrCreate(
['github_id', $githubUser->id],
['avatar' => $githubUser->avatar]
);
In case a user with the given github_id
was found it’ll be returned, if not a new user will be created with the given github_id
and avatar
.
read full article at themsaid.com