https://github.com/misterdebug/crud-generator-laravel
Create a Laravel 10 CRUD in a few seconds
https://github.com/misterdebug/crud-generator-laravel
composer-package crud crud-generator generator laravel laravel-crud laravel-crud-generator laravel-package laravel10 laravel8 laravel9 rest rest-api
Last synced: 29 days ago
JSON representation
Create a Laravel 10 CRUD in a few seconds
- Host: GitHub
- URL: https://github.com/misterdebug/crud-generator-laravel
- Owner: misterdebug
- Created: 2016-11-11T19:28:17.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2024-01-18T17:41:49.000Z (over 1 year ago)
- Last Synced: 2025-04-12T22:17:57.825Z (29 days ago)
- Topics: composer-package, crud, crud-generator, generator, laravel, laravel-crud, laravel-crud-generator, laravel-package, laravel10, laravel8, laravel9, rest, rest-api
- Language: PHP
- Homepage:
- Size: 106 KB
- Stars: 314
- Watchers: 7
- Forks: 43
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- awesome-laravel-filament - Laravel CRUD Generator
- awesome-laravel-filament - Laravel CRUD Generator
README
# 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. It includes :
- **Controller** with all the code already written
- **Views** (index, create, edit, show)
- **Model** with relationships
- **Request** file with validation rules
- **Migration** fileAnd since 1.9.2, a complete **REST API** !
[ NEW ] [Your voice matters! Participate in the polls and vote for future features and improvements](https://github.com/misterdebug/crud-generator-laravel/discussions/categories/polls)
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!
## Installation
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, stubs and the default-theme directory for views:
``` php artisan vendor:publish --provider="Mrdebug\Crudgen\CrudgenServiceProvider" ```
## Usage
### Create CRUD (or REST API)
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](https://github.com/misterdebug/crud-generator-laravel/wiki/Make-a-complete-REST-API-instead-of-CRUD)
#### CRUD generator command :
``` php artisan make:crud nameOfYourCrud "column1:type, column2" ``` (theory)
``` php artisan make:crud post "title:string, content:text" ``` (for our example)
[Available options](https://github.com/misterdebug/crud-generator-laravel/wiki/Available-options-when-you-use-make:crud-command)
[Generate CRUD with livewire datatable](https://github.com/misterdebug/crud-generator-laravel/wiki/Generate-CRUD-with-livewire-datatable)
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

### 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
`/posts/create` :
`/posts` :
You can `edit` and `delete` 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.
If you want to customize generated views : [https://github.com/misterdebug/crud-generator-laravel/wiki/Custom-your-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](https://github.com/misterdebug/crud-generator-laravel/wiki/Add-a-commentable-structure-to-any-model)Finished π
## Remove a CRUD
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

## License
This package is licensed under the [license MIT](http://opensource.org/licenses/MIT).
## Other Projects
Explore my other projects on GitHub:
- **[LaraFileEncrypter](https://github.com/misterdebug/laravel-file-encrypter)**: Secure your files in Laravel with AES-256 encryption, without persistent key storage hassle.