Crud Generator Laravel 9 and 10 (your time saver)
Crud Generator Laravel is a package that you can integrate in your Laravel to create a REAL CRUD :
- controller with all the code already written
- views (index, create, edit, show)
- model with relationships
- request file with rules
- migration file
And since 1.9.2, a complete REST API !
Installation
1. Run 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
not required if you don't need views
3. Publish config file and default-theme directory for views
php artisan vendor:publish --provider="Mrdebug\Crudgen\CrudgenServiceProvider"
Usage
Create CRUD (or REST API)
Let's make a real life example : Build 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 🙂
You need a REST API instead of a CRUD ? Read this wiki
CRUD generator command :
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, controller, views and request are generated with your fields (here: title and content).
Now let's add our relationships (Comment
and Tag
models) :
We add an hasMany
relationship between our Post
and Comment
and a belongsToMany
with Tag
If you look good, two migrations are created (create_posts
AND create_post_tag
).
create_posts
will be 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
Migration
Both migration files are created in your database/migrations directory. If necessary edit them and run :
php artisan migrate
Controller
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.
Routes
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)
Screenshots
You can edit
and delete
too your new post. And a show
page is created too 🙂
Request
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.
Views
A views directory is created in your resources/views directory. 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"
Finish your blog
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 🎉
Remove a CRUD
You can delete all files (except migrations) created by the make:crud
command at any time (you don't need to remove all files by hand)
php artisan rm:crud nameOfYourCrud --force
php artisan rm:crud post --force
(in our example)
--force (optional) can delete all files without confirmation
License
This package is licensed under the license MIT.