Introduction
Laravel Route Model binding is a great way to speed up your development and is a good way to clean up your code a bit. Laravel Route Model binding provides a convenient way to inject class instances into your routes.
For example, instead of injecting a user's ID, you can inject the entire User class instance that matches the given ID.
Basic Routing
Most of the routes in your application are located in /routes/web.php file, which are loaded by App\Providers\RouteServiceProvider
class. The most basic Laravel Route accepts a URI and a closure.
<?php Route::get('/', function(){ return 'Hello world'; });
Example
Let's say we want to visit a User by their IDs, we normally have the following Route setup to achieve this.
<?php Route::get('/users/{id}', function($id, App\User $user){ $user = $user->findOrFail($id); dd($user->name); });
Route Model Binding
With Laravel Route Model binding, this process simplifies to some extent & its a quite easy way to do thing like these.
To use Route Model binding, we first need to register the Model inside of the boot() method of RouteServiceProvider class.
<?php public function boot(Router $router) { parent::boot(); $router->model('user',User::class); }
Now, we can use the user binding inside of our /routes/web.php
file to achieve the similar results:
<?php Route::get('/users/{user}', function($user){ //we can now directly say dd($user->name); });
Final Words
Laravel Route Model binding works well with nested URIs which sometimes quite difficult to tackle with basic routing. So give it a try yourself and try if thats work our for you. If you have any feedback or comments, write down in the comment box below. You can also follow us on Twitter.