How to create Laravel Resource Controller with resource route?

How to create Laravel Resource Controller with resource route?

In this tutorial, I will let you know how to create resource controller with resource routes in Laravel 5.

In every application, it is common to have create, read, update and delete (CRUD) functionality.

Laravel resource controller makes it easier to create CRUD application around resources.

For this post, we will create a simple structure only with the help of some cool resource routes and controllers.

Laravel provides so many interesting feature that you can use in your application to save lots of time.

You can easily create a resource controller using artisan tool.

Resource route

First, i will create a resource route that handle different routes.

  1. Route::resource('users', 'UserController');

Above route will handle following routes :

  1. Route::get('users',['as'=>'users.index','uses'=>'UserController@index']);
  2. Route::post('users/create',['as'=>'users.store','uses'=>'UserController@store']);
  3. Route::get('users/edit/{id}',['as'=>'users.edit','uses'=>'UserController@edit']);
  4. Route::patch('users/{id}',['as'=>'users.update','uses'=>'UserController@update']);
  5. Route::delete('users/{id}',['as'=>'users.destroy','uses'=>'UserController@destroy']);
  6. Route::get('users/{id}',['as'=>'users.show','uses'=>'UserController@show']);

Laravel provides artisan command to check route lists.

php artisan route:list

You will see following output when you run above artisan command :

+--------+-----------+-------------------+---------------+---------------------------------------------+--------------+
| Domain | Method    | URI               | Name          | Action                                      | Middleware   |
+--------+-----------+-------------------+---------------+---------------------------------------------+--------------+
|        | GET|HEAD  | api/user          |               | Closure                                     | api,auth:api |
|        | GET|HEAD  | users             | users.index   | App\Http\Controllers\UserController@index   | web          |
|        | POST      | users             | users.store   | App\Http\Controllers\UserController@store   | web          |
|        | GET|HEAD  | users/create      | users.create  | App\Http\Controllers\UserController@create  | web          |
|        | GET|HEAD  | users/{user}      | users.show    | App\Http\Controllers\UserController@show    | web          |
|        | PUT|PATCH | users/{user}      | users.update  | App\Http\Controllers\UserController@update  | web          |
|        | DELETE    | users/{user}      | users.destroy | App\Http\Controllers\UserController@destroy | web          |
|        | GET|HEAD  | users/{user}/edit | users.edit    | App\Http\Controllers\UserController@edit    | web          |
+--------+-----------+-------------------+---------------+---------------------------------------------+--------------+

To know more about resourceful route click here : Reourceful routing

Resource Controller

Now i will create resource controller by using artisan command.

Run artisan command from command line in the root directory of laravel application.

php artisan make:controller UserController --resource --model=user

By running above command, you will see resource controller "UserController" with all the method we need.

app/Http/Controllers/UserController.php
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\user;
  4. use Illuminate\Http\Request;
  5. class UserController extends Controller
  6. {
  7. /**
  8. * Display a listing of the resource.
  9. *
  10. * @return \Illuminate\Http\Response
  11. */
  12. public function index()
  13. {
  14. //
  15. }
  16. /**
  17. * Show the form for creating a new resource.
  18. *
  19. * @return \Illuminate\Http\Response
  20. */
  21. public function create()
  22. {
  23. //
  24. }
  25. /**
  26. * Store a newly created resource in storage.
  27. *
  28. * @param \Illuminate\Http\Request $request
  29. * @return \Illuminate\Http\Response
  30. */
  31. public function store(Request $request)
  32. {
  33. //
  34. }
  35. /**
  36. * Display the specified resource.
  37. *
  38. * @param \App\user $user
  39. * @return \Illuminate\Http\Response
  40. */
  41. public function show(user $user)
  42. {
  43. //
  44. }
  45. /**
  46. * Show the form for editing the specified resource.
  47. *
  48. * @param \App\user $user
  49. * @return \Illuminate\Http\Response
  50. */
  51. public function edit(user $user)
  52. {
  53. //
  54. }
  55. /**
  56. * Update the specified resource in storage.
  57. *
  58. * @param \Illuminate\Http\Request $request
  59. * @param \App\user $user
  60. * @return \Illuminate\Http\Response
  61. */
  62. public function update(Request $request, user $user)
  63. {
  64. //
  65. }
  66. /**
  67. * Remove the specified resource from storage.
  68. *
  69. * @param \App\user $user
  70. * @return \Illuminate\Http\Response
  71. */
  72. public function destroy(user $user)
  73. {
  74. //
  75. }
  76. }

Finally, we have our resource controller with resource routes, so this is really quite easy to create a resource controller in Laravel.


Phone: (+91) 8800417876
Noida, 201301