Crud Generator Laravel is a package that you can integrate in your Laravel to create a REAL CRUD. It includes :
- Controller with all the code already written
- Views (index, create, edit, show)
- Model with relationships
- Request file with validation rules
- Migration file
And since 1.9.2, a complete REST API !
[ NEW ] Your voice matters! Participate in the polls and vote for future features and improvements
1. Run the following composer command:
composer require mrdebug/crudgen --dev
2. If you don't use Laravel Collective Form package in your project, install it:
composer require laravelcollective/html
(Note: This step is not required if you don't need views.)
3. Publish the configuration file and the default-theme directory for views:
php artisan vendor:publish --provider="Mrdebug\Crudgen\CrudgenServiceProvider"
Let's illustrate with a real life example : Building a blog
A Post
has many (hasMany) Comment
and belongs to many (belongsToMany) Tag
A Post
can have a title
and a content
fields
Let's do this 🙂
If you need a REST API instead of CRUD, read this wiki
php artisan make:crud nameOfYourCrud "column1:type, column2"
(theory)
php artisan make:crud post "title:string, content:text"
(for our example)
When you call this command, the controller, views and request are generated with your fields (in this case, title and content).
Now let's add our relationships (Comment
and Tag
models) :
We add a hasMany
relationship between our Post
and Comment
and a belongsToMany
with Tag
Two migrations are created (create_posts
AND create_post_tag
).
create_posts
is your table for your Post
model
create_post_tag
is a pivot table to handle the belongsToMany
relationship
Post
model is generated too with both relationships added
Both migration files are created in your database/migrations directory. If necessary edit them and run :
php artisan migrate
A controller file is created in your app/Http/Controllers directory. All methods (index, create, store, show, edit, update, destroy) are filled with your fields.
To create your routes for this new controller, you can do this :
Route::resource('posts', PostsController::class);
(don't forget to import your PostsController
in your web.php
file)
You can edit
and delete
your new post. And a show
page is created too 🙂
A request file is created in your app/Http/Requests directory. By default, all fields are required, you can edit it according to your needs.
A views directory is created in your resources/views directory. If you want to customize generated views : https://github.com/misterdebug/crud-generator-laravel/wiki/Custom-your-views
You can create views independently of the CRUD generator with :
php artisan make:views nameOfYourDirectoryViews "column1:type, column2"
Add your Comment
CRUD (with a column comment
and a post_id
)
php artisan make:crud comment "comment:text, post_id:integer"
Add your Tag
CRUD (with a column
name)
php artisan make:crud tag "name"
FYI : Comment
is a specific case and you can use make:commentable
command
Docs about commentable
Finished 🎉
You can delete all files (except migrations) created by the make:crud
command at any time. No need to remove files manually :
php artisan rm:crud nameOfYourCrud --force
php artisan rm:crud post --force
(in our example)
The --force
flag (optional) deletes all files without confirmation
This package is licensed under the license MIT.