torkzz/generate-laravel

这是https://github.com/aaronlumsden/laravel-vue-api-crud-generator的分支

安装: 8

依赖者: 0

建议者: 0

安全性: 0

星级: 0

关注者: 0

分支: 2

语言:Blade

dev-master 2023-07-17 15:40 UTC

This package is auto-updated.

Last update: 2024-09-17 18:19:11 UTC


README

概览

这是一个Laravel包,允许您为Laravel应用程序生成样板代码。只需输入数据库表的名称,它将基于该名称创建

  • Laravel模型
  • Laravel控制器(包括get、list、create、update、delete以及基于所选DB表的验证)
  • Laravel路由(get、list、create、update、delete)

此包旨在加快后端(Laravel)和前端(Vue.js)之间的通信过程。

安装

composer require torkzz/generate-laravel

用法

首先,您应该以通常的方式创建一个新的迁移。例如,如果创建一个posts表,请使用以下命令:

php artisan make:migration create_posts_table

然后在您的迁移文件中添加您的字段,就像平常一样

Schema::create('posts', function (Blueprint $table) {
    $table->id();
    $table->string('title',200);
    $table->text('content')->nullable();
    $table->timestamps();
});

然后运行迁移命令以创建posts表

php artisan migrate

一旦完成,只需运行一个zz:laravel命令。将表的名称添加到命令的末尾,在本例中为posts。

php artisan zz:laravel posts

这将生成上述所有文件。

运行此命令后,使用上面的posts示例,将创建以下样板文件

路由

基于posts数据库表,将生成以下路由

Route::get('posts', 'PostsController@list');
Route::get('posts/{id}', 'PostsController@get');
Route::post('posts', 'PostsController@create');
Route::put('posts/{id}', 'PostsController@update');
Route::delete('posts/{id}', 'PostsController@delete');

控制器

基于posts数据库表,将生成以下控制器

<?php
namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Posts;

class PostsController extends Controller
{
    public function get(Request $request, $id){
      return Posts::findOrFail($id);
    }

    public function list(Request $request){
      return Posts::get();
    }

    public function create(Request $request){

      $validatedData = $request->validate([
        'title' => 'required |max:200 ',
        'content' => 'required ',
        'meta_description' => 'required |max:160 ',
      ],[
        'title.required' => 'title is a required field.',
        'title.max' => 'title can only be 200 characters.',
        'content.required' => 'content is a required field.',
        'meta_description.required' => 'meta_description is a required field.',
        'meta_description.max' => 'meta_description can only be 160 characters.',
      ]);

        $posts = Posts::create($request->all());
        return $posts;
    }

    public function update(Request $request, $id){

      $validatedData = $request->validate([
        'title' => 'required |max:200 ',
        'content' => 'required ',
        'meta_description' => 'required |max:160 ',
      ],[
        'title.required' => 'title is a required field.',
        'title.max' => 'title can only be 200 characters.',
        'content.required' => 'content is a required field.',
        'meta_description.required' => 'meta_description is a required field.',
        'meta_description.max' => 'meta_description can only be 160 characters.',
      ]);

        $posts = Posts::findOrFail($id);
        $input = $request->all();
        $posts->fill($input)->save();
        return $posts;
    }

    public function delete(Request $request, $id){
        $posts = Posts::findOrFail($id);
        $posts->delete();
    }
}
 ?>

模型

基于posts数据库表,将生成以下模型

<?php
namespace App;

use Illuminate\Database\Eloquent\Model;

class Posts extends Model
{

    /**
     * The attributes that should be hidden for arrays.
     *
     * @var  array
     */
    protected $guarded = [
        'id'
    ];

    /**
     * The attributes that should be cast to native types.
     *
     * @var  array
     */
    protected $casts = [
        ''
    ];
}?>

配置

以下是配置设置及其默认值。

<?php
return [
    'model_dir' => base_path('app/Models'),
    'controller_dir' => base_path('app/Http/Controllers'),
    'routes_file' => 'api.php'
];
?>

要将配置文件复制到您的Laravel工作项目,请输入以下Artisan命令

php artisan vendor:publish --provider="torkzz\generateLaravelApi\generateInitialServiceProvider" --tag="config"

model_dir

指定生成的模型文件应存储的位置

controller_dir

指定生成的控制器文件应存储的位置

routes_dir

指定路由目录的位置

routes_file

指定路由文件名称

自定义模板

如果您使用另一个前端框架,如React,或者想要调整模板的结构,则可以通过将它们发布到您的工作Laravel项目来自定义模板

`php artisan vendor:publish --provider="torkzz\generateLaravelApi\generateInitialServiceProvider" --tag="templates"``

它们将出现在以下位置

\resources\views\vendor\generateLaravelApi

模板中的变量

每个模板文件都会传递一个包含以下字段的数据数组

$data['singular']

数据库表的单一名称,例如Post

$data['plural']

数据库表的复数名称,例如Posts

$data['singular_lower']

数据库表的单一名称(小写),例如post

$data['plural_lower']

数据库表的复数名称(小写),例如posts

$data['fields']

模型中包含的字段数组

  • name(字段名称)
  • type(mysql varchar、int等)
  • simplified_type(text、textarea、number)
  • required(字段是否必需)
  • max(最大字符数)