• Stars
    star
    330
  • Rank 123,401 (Top 3 %)
  • Language
    PHP
  • License
    MIT License
  • Created over 7 years ago
  • Updated 12 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Laravel Code Generator based on MySQL Database

Laravel Code Generator

Do you have a well structed database and you want to make a Laravel Application on top of it. By using this tools you can generate Models which have necessary methods and property, Request class with rules, generate route from controllers method and its parameter and full features form with validation error message and more with a single line of command. So lets start. See demo code and slides

Installation

composer require digitaldream/laracrud --dev

Setting

  1. Add this line to config/app.php providers array . Not needed if you are using laravel 5.5 or greater
    LaraCrud\LaraCrudServiceProvider::class
  1. Then Run
    php artisan vendor:publish --provider="LaraCrud\LaraCrudServiceProvider"

Commands

Then you can see new commands by running 'php artisan'

  • laracrud:model {tableName} {name?} {--on=} {--off=}: Create model based on table
  • laracrud:request {Model} {name?} {--resource=} {--controller=} {--api}: Create Request Class/es based on table
  • laracrud:Controller {Model} {name?} {--parent=} {--only=} {--api}: Create Controller Class based on Model
  • laracrud:mvc {table} {--api}: Run above commands into one place
  • laracrud:route {controller} {--api}: Create routes based on controller method
  • laracrud:view {Model} {--page=(index|create|edit|show|form|table|panel|modal)} {--type=} {--name=} {--controller=}
  • laracrud:migration {table}: Create a migration file based on Table structure. Its opposite of normal migration file creation in Laravel
  • laracrud:policy {model} {--controller=} {--name=}
  • laracrud:package {--name=}
  • laracrud:transformer {model} {name?}: Create a dingo api transformer for a model
  • laracrud:test {controller} {--api}: Create test methods for each of the method of a controller

N.B: --api option will generate api resource. Like Controller, Request, Route, Test. Dingo API compatible code will be generated . See API documentation

How to Use

Create a Model

There are some good practice for model in Laravel. Use scope to define query, define fillable, dates, casts etc. Also define relation, setAttribute and getAttribute for doing work before and after model save and fetch.

We are going to create this thing automatically by reading table structure and its relation to others table.

    php artisan laracrud:model users

By default Model Name will be based on Table name. But Model name can be specified as second parameter. Like below

php artisan laracrud:model users MyUser

Video Tutorial

Create Request

A well structured table validate everything before inserting . You can not insert a illegal date in a birth_date column if its data type set to date.So if we have this logic set on table why we should write it on Request again. Lets use this table logic to create a request class in laravel.

php artisan laracrud:request MyUser

Here MyUser is Eloquent Model. From LaraCrud version 4.* this command accept Model Name instead of Table

Like Model Name we can also specify a custom request name.

php artisan laracrud:request User RegisterRequest

Also If you like to create multiple request for your resourceful controller then

php artisan laracrud:request User โ€“-resource=index,show,create,update,destroy

It will create a folder users on app/Http/Requests folder and create these request classes. Sometimes you may like to create individual request class for each of your controller method then.

php artisan laracrud:request User โ€“-controller=UserController
php artisan laracrud:request User --controller=UserController --api //this will generated Request for API usages

It will read your controller and create request classes for your Public method

video tutorial

Create Controller

    php artisan laracrud:controller User
    //Or Give a controller name.
    php artisan laracrud:controller User MyUserController
    //Or we can give a sub namespace
    php artisan laracrud:controller User User/UserController
    //It will create a folder User to controllers
    php artisan laracrud:controller Comment --parent=Post // it will create a sub resource CommentController

This will create a controller which have create, edit, save and delete method with codes . It also handle your relation syncronization

video tutorial

Create View

A typical form represent a database table. E.g. for a Registration form it has all the input field which is necessary for users table. Most of the time we use Bootstrap to generate a form . It has error field highlighting if validation fails. Also display value. This all can be done by

 php artisan laracrud:view User --page=form
 php artisan laracrud:view User --page=index --type=panel //There are three type of layout for index page panel,table and tabpan
 php artisan laracrud:view User --controller=UserController // Create all the views which is not created yet for this controller
 

Here User is Eloquent Model. From LaraCrud version 4.* this command accept Model Name instead of Table

This will create a complete users crud view.

video tutorial

Create Route

Routes are the most vital part of a laravel application. WE create routes by its public methods and parameter. Lets do this work to rotue command.

    php artisan laracrud:route UserController
    php artisan laracrud:route UserController --api // generate api routes for this conroller

If you have some routes already redine for then do not worry. It will create routes for which does not define yet. Please use forward slash(/) for sub namespace. For example,

 php artisan laracrud:route Auth/AuthController

Policy

Laravel have default policy generator. It works like same with one extra feature that is create policy method based on controller public methods.

php artisan laracrud:policy User 
// will create policy class with basic methods
php artisan laracrud:policy User --controller=UserController
// create method based on Controller public methods

Package

Packages gives us opportunity to create/use components into our existing application. That make our code reusable. Laravel package has similar structure as a Laravel application has.

php artisan laracrud:package Hello

This will create a folder same structure as a Laravel application has into your /packages folder See Package documentation Video tutorial

Test

We need to test our routes endpoints. To create test class based on a controller do the following

php artisan laracrud:test UserController
// or to make api test just pass --api like below
php artisan laracrud:test UserController --api

Transformer

Transformer are a vital part of Dingo API. To expose a model to api endpoint Transformer play media between api and model.

php artisan laracrud:transformer User

See API documentation

Create everything at once

If we need all the command to then just to

    php artisan laracrud:mvc users
    php artisan laracrud:mvc users --api // create all the API related resources

It will create Model, Request, Controller, View. Then you just need to run route command to create routes.

Migration

Somethings we may need to create a migration file from a table. Then this command will be useful. It will generate all the necessary code for your migration files. So your migration file is ready to use.

php artisan laracrud:migration users

Customize Code Template

Coding Style differ from developer to developer. So you can control how your code will be generated. Code templates are organized by folder in resources/vendor/laracrud/templates . Go there and change the style. After that your code will be generated by reading these files. Please do not remove or change @@placeHolder@@. This will be replaced by application.

NB: only for mysql database

It is recommended to take a look in the generated file before use it.

Like my work? If so hire me on upwork

More Repositories

1

laravel-seo-tools

Laravel Seo package for Content writer/admin/web master who do not know programming but want to edit/update SEO tags from dashboard
PHP
145
star
2

image-crawler-python

Find image from a web url and save it to your project folder
Python
37
star
3

photo

Laravel Photo Manager
PHP
32
star
4

googleplace

Google Places API Library. Easy to use and learn
PHP
20
star
5

dbreader

Database Reader
PHP
8
star
6

data-converter

something in web application we need to convert data from excel file to array, array to excel file and more.
PHP
7
star
7

laravel-seo-tools-demo

Demo project for SEO
PHP
4
star
8

laracrud-demo

This project is the demo of laracrud. Most of the classes are created by using laracrud commands.
PHP
3
star
9

social-media

Social Media login and registration are now common in almost all website. But its very hard to find a solution which support Facebook, Google, Linkedin and Twitter in Object Oriented PHP. This package can be used in any PHP framework.
PHP
3
star
10

symfony-auth

Symfony 6 authentication system with tailwindcss
PHP
2
star
11

mvc

Little and really simple MVC(Model VIew Controller).This is Just for the beginner who want to know how MVC work.This is is not build to handle any commercial project.
PHP
2
star
12

minesweeper

Minesweeper is a single-player puzzle computer game. The objective of the game is to clear a rectangular board containing hidden "mines" or bombs without detonating any of them, with help from clues about the number of neighboring mines in each field
PHP
2
star
13

laravel-web-push-demo

Laravel WebPush Notification from scratch to finish
PHP
1
star
14

laravel-5-boilerplate

Laravel 5.4 application with web authentication, Social Media login and register, api with Laravel Passport and Dingo, testing with codeception.
PHP
1
star
15

laravel8-vue3

Laravel 8 and Vue3
PHP
1
star
16

django-cms

Small django cms to learn django by project
Python
1
star