torkzz / generate-laravel
这是https://github.com/aaronlumsden/laravel-vue-api-crud-generator的分支
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(最大字符数)