Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/0x3b3fc/crudy
https://github.com/0x3b3fc/crudy
Last synced: about 4 hours ago
JSON representation
- Host: GitHub
- URL: https://github.com/0x3b3fc/crudy
- Owner: 0x3b3fc
- License: mit
- Created: 2023-08-30T21:51:11.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2023-08-31T08:25:50.000Z (over 1 year ago)
- Last Synced: 2024-12-15T12:09:31.202Z (26 days ago)
- Language: PHP
- Size: 48.8 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Crudy (Crud Generator) For Laravel 9 & 10
Crudy (Crud Generator)
- **Controller**
- **Views** (index, create, edit, show)
- **Model** (with relationships)
- **Request** (file with validation rules)
- **Migration**## Installation
1\. Run the following composer command:
``` composer require devsi/crudy ```
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="devsi\crudy\CrudyServiceProvider" ```
## 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 it
If you need a REST API instead of CRUD, just do it:
```php artisan make:rest-api nameOfYourCrud "column1:type, column2"```#### 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 [string,text,integer]
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
![image](https://user-images.githubusercontent.com/23297600/192173463-f3e61b41-373a-44a8-870f-fc837968a5c7.png)
### 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` :
![image](https://user-images.githubusercontent.com/23297600/192176702-dc0371f4-5d1b-49e3-a9ea-7352a33187d4.png)`/posts` :
![image](https://user-images.githubusercontent.com/23297600/192176845-b3722083-90a9-4257-90d1-8a2eb28baa01.png)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.
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" ```
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
![image](https://user-images.githubusercontent.com/23297600/192183601-a4f8d206-3920-4f8a-8e0d-cf8442894e07.png)
## License
This package is licensed under the [license MIT](http://opensource.org/licenses/MIT).