Wallogit.com
2017 © Pedro Peláez
Create a Laravel Crud in a few seconds
Crud Generator Laravel is a package that you can integrate in your Laravel to create a REAL CRUD. It includes :, (*1)
And since 1.9.2, a complete REST API !, (*2)
[ NEW ] Your voice matters! Participate in the polls and vote for future features and improvements, (*3)
If you find this project useful, please consider giving it a star⭐. It helps me prioritize and focus on keeping project up-to-date. Thank you for your support!, (*4)
1. Run the following composer command:, (*5)
composer require mrdebug/crudgen --dev, (*6)
2. If you don't use Laravel Collective Form package in your project, install it:, (*7)
composer require laravelcollective/html, (*8)
(Note: This step is not required if you don't need views.), (*9)
3. Publish the configuration file, stubs and the default-theme directory for views:, (*10)
php artisan vendor:publish --provider="Mrdebug\Crudgen\CrudgenServiceProvider", (*11)
Let's illustrate with a real life example : Building a blog, (*12)
A Post has many (hasMany) Comment and belongs to many (belongsToMany) Tag, (*13)
A Post can have a title and a content fields, (*14)
Let's do this 🙂, (*15)
If you need a REST API instead of CRUD, read this wiki, (*16)
php artisan make:crud nameOfYourCrud "column1:type, column2" (theory), (*17)
php artisan make:crud post "title:string, content:text" (for our example), (*18)
Available options, (*19)
Generate CRUD with livewire datatable, (*20)
When you call this command, the controller, views and request are generated with your fields (in this case, title and content).
, (*21)
Now let's add our relationships (Comment and Tag models) :, (*22)
, (*23)
We add a hasMany relationship between our Post and Comment
and a belongsToMany with Tag, (*24)
Two migrations are created (create_posts AND create_post_tag)., (*25)
create_posts is your table for your Post model, (*26)
create_post_tag is a pivot table to handle the belongsToMany relationship, (*27)
Post model is generated too with both relationships added, (*28)
, (*29)
Both migration files are created in your database/migrations directory. If necessary edit them and run :, (*30)
php artisan migrate, (*31)
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., (*32)
To create your routes for this new controller, you can do this :, (*33)
Route::resource('posts', PostsController::class); (don't forget to import your PostsController in your web.php file), (*34)
/posts/create :
, (*35)
/posts :
, (*36)
You can edit and delete your new post. And a show page is created too 🙂, (*37)
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., (*38)
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, (*39)
You can create views independently of the CRUD generator with :
php artisan make:views nameOfYourDirectoryViews "column1:type, column2", (*40)
Add your Comment CRUD (with a column comment and a post_id), (*41)
php artisan make:crud comment "comment:text, post_id:integer", (*42)
Add your Tag CRUD (with a column name), (*43)
php artisan make:crud tag "name", (*44)
FYI : Comment is a specific case and you can use make:commentable command
Docs about commentable, (*45)
Finished 🎉, (*46)
You can delete all files (except migrations) created by the make:crud command at any time. No need to remove files manually :, (*47)
php artisan rm:crud nameOfYourCrud --force, (*48)
php artisan rm:crud post --force (in our example), (*49)
The --force flag (optional) deletes all files without confirmation, (*50)
, (*51)
This package is licensed under the license MIT., (*52)
Explore my other projects on GitHub:, (*53)