ItSolutionStuff.com

How to Create Resource Controller in Laravel?

By Hardik Savani • April 16, 2024
Laravel

In this post we are going to learn how to use resource controller using resource route in laravel 5, laravel 6, laravel 7, laravel 8, laravel 9, laravel 10 and laravel 11 application from scratch.

Laravel resource controller is pretty interesting feature to create quick CRUD application in laravel. For resource you have to do two things on laravel application. first you have to create resource route on laravel they provide insert, update, view, delete routes and second you have to create resource controller that will provide method for insert, update, view and delete.

So, in this example we will see how to create resource route and how they work.

First we have to understand why we choose resource route instead of different route. we always declare different different route for our crud application like as bellow:

CRUD Route:

	

Route::get('items',['as'=>'items.index','uses'=>'ItemController@index']);

Route::post('items/create',['as'=>'items.store','uses'=>'ItemController@store']);

Route::get('items/edit/{id}',['as'=>'items.edit','uses'=>'ItemController@edit']);

Route::patch('items/{id}',['as'=>'items.update','uses'=>'ItemController@update']);

Route::delete('items/{id}',['as'=>'items.destroy','uses'=>'ItemController@destroy']);

Route::get('items/{id}',['as'=>'items.view','uses'=>'ItemController@view']);

As you can see above route declare, we have to create six routes for our crud application module. But we can simply create those six routes by using bellow resource route:

Resource Route:

Route::resource('items', 'ItemController');

Now, you can run bellow command and check create route lists:

php artisan route:list

Now we have output as like bellow created route:

+--------+-----------+-------------------+---------------+---------------------------------------------+--------------+

| Domain | Method | URI | Name | Action | Middleware |

+--------+-----------+-------------------+---------------+---------------------------------------------+--------------+

| | GET|HEAD | api/user | | Closure | api,auth:api |

| | GET|HEAD | items | items.index | App\Http\Controllers\ItemController@index | web |

| | POST | items | items.store | App\Http\Controllers\ItemController@store | web |

| | GET|HEAD | items/create | items.create | App\Http\Controllers\ItemController@create | web |

| | GET|HEAD | items/{item} | items.show | App\Http\Controllers\ItemController@show | web |

| | PUT|PATCH | items/{item} | items.update | App\Http\Controllers\ItemController@update | web |

| | DELETE | items/{item} | items.destroy | App\Http\Controllers\ItemController@destroy | web |

| | GET|HEAD | items/{item}/edit | items.edit | App\Http\Controllers\ItemController@edit | web |

+--------+-----------+-------------------+---------------+---------------------------------------------+--------------+

Ok, now we have to create resource controller by using bellow command, so let's run bellow command and check ItemController in your app directory:

Resource Controller Command:

php artisan make:controller ItemController --resource --model=Item

After successfully run above command, you can see your ItemController with following resource method, So let's open and see.

app/Http/Controllers/ItemController.php

<?php


namespace App\Http\Controllers;


use App\Item;

use Illuminate\Http\Request;


class ItemController extends Controller

{

/**

* Display a listing of the resource.

*

* @return \Illuminate\Http\Response

*/

public function index()

{


}


/**

* Show the form for creating a new resource.

*

* @return \Illuminate\Http\Response

*/

public function create()

{


}


/**

* Store a newly created resource in storage.

*

* @param \Illuminate\Http\Request $request

* @return \Illuminate\Http\Response

*/

public function store(Request $request)

{


}


/**

* Display the specified resource.

*

* @param \App\Item $item

* @return \Illuminate\Http\Response

*/

public function show(Item $item)

{


}


/**

* Show the form for editing the specified resource.

*

* @param \App\Item $item

* @return \Illuminate\Http\Response

*/

public function edit(Item $item)

{


}


/**

* Update the specified resource in storage.

*

* @param \Illuminate\Http\Request $request

* @param \App\Item $item

* @return \Illuminate\Http\Response

*/

public function update(Request $request, Item $item)

{


}


/**

* Remove the specified resource from storage.

*

* @param \App\Item $item

* @return \Illuminate\Http\Response

*/

public function destroy(Item $item)

{


}

}

Ok, this way you can simply use resource route and controller, make quick crud module for your project.

I hope It can help you...

Hardik Savani

Hardik Savani

I'm a full-stack developer, entrepreneur, and founder of ItSolutionStuff.com. Passionate about PHP, Laravel, JavaScript, and helping developers grow.

📺 Subscribe on YouTube

We Are Recommending You

How to use Carbon in Laravel Blade or Controller File?

Read Now →

How to Call Controller Function in Blade Laravel?

Read Now →

Laravel Redirect to Route from Controller Example

Read Now →

How to Call a Controller Function in Another Controller in Laravel?

Read Now →

Laravel Call Function from Same Controller Example

Read Now →

Laravel - How to Get .env Variable in Blade or Controller?

Read Now →

How to Call Middleware from Controller in Laravel?

Read Now →

How to Execute Artisan Command from Controller in Laravel?

Read Now →

Laravel AJAX CRUD Tutorial Example

Read Now →

Laravel Generate PDF from HTML View File and Download Example

Read Now →

CRUD (Create Read Update Delete) Example in Laravel 5.2 from Scratch

Read Now →

How to Get Current Route Name in Laravel?

Read Now →

How to Generate Route with Query String in Laravel?

Read Now →

Laravel Clear Cache from Route, View, Config Example

Read Now →