va / cutlet-migrate
一个用于在Laravel应用程序中自定义目录迁移的包,可用于运行migrate:update命令。
v1.0.8
2022-06-20 19:04 UTC
Requires
- php: 7.*|8.*
- laravel/framework: 5.8.*|^6.3|7.*|8.*|9.*
README
安装
composer require va/cutlet-migrate
发布配置
php artisan vendor:publish --tag=cutlet-migrate
用法
您可以运行此命令进行使用
php artisan migrate:update
php artisan migrate:update --migrate|-m
php artisan migrate:update --migrate|-m --seed|-s
php artisan migrate:update --migrate|-m --seed|-s --status|-t
并使用此命令显示帮助
php artisan --help migrate:update
or
php artisan migrate:update -h
您可以自定义mysql迁移目录
return [ /* * It's from 'database/migrations/' path.. */ 'functions_path' => 'mysql/functions', 'procedures_path' => 'mysql/procedures', 'triggers_path' => 'mysql/triggers', 'views_path' => 'mysql/views', ];
如何在Laravel中创建函数、存储过程、触发器和视图
Use this command once time in project after install cutlet-migrate:
php artisan migrate:update
## Create a function:
php artisan make:migration function_name --path=database/migrations/mysql/functions
## Create a procedure:
php artisan make:migration procedure_name --path=database/migrations/mysql/procedures
## Create a trigger:
php artisan make:migration trigger_name --path=database/migrations/mysql/triggers
## Create a view:
php artisan make:migration view_name --path=database/migrations/mysql/views
如何在迁移中编写函数、存储过程、触发器和视图
## Write a function: <?php use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; class CutletFunction extends Migration { /** * Run the migrations. * * @return void */ public function up() { \Illuminate\Support\Facades\DB::unprepared(" DROP FUNCTION IF EXISTS function_name; CREATE FUNCTION function_name( param1 INT, param2 INT, .. ) RETURNS datatype [NOT] DETERMINISTIC BEGIN -- statements END "); } /** * Reverse the migrations. * * @return void */ public function down() { \Illuminate\Support\Facades\DB::unprepared(" DROP FUNCTION if EXISTS function_name; "); } }
## Write a procedure: <?php use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; class CutletProcedure extends Migration { /** * Run the migrations. * * @return void */ public function up() { \Illuminate\Support\Facades\DB::unprepared(" DROP PROCEDURE IF EXISTS procedure_name; CREATE PROCEDURE procedure_name( IN param1 INT, IN param2 INT, .. ) BEGIN -- statements END "); } /** * Reverse the migrations. * * @return void */ public function down() { \Illuminate\Support\Facades\DB::unprepared(" DROP PROCEDURE IF EXISTS procedure_name; "); } }
## Write a trigger: <?php use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; class CutletTrigger extends Migration { /** * Run the migrations. * * @return void */ public function up() { \Illuminate\Support\Facades\DB::unprepared(" DROP TRIGGER IF EXISTS trigger_name; CREATE TRIGGER trigger_name {BEFORE | AFTER} {INSERT | UPDATE| DELETE } ON table_name FOR EACH ROW -- trigger_body; "); } /** * Reverse the migrations. * * @return void */ public function down() { \Illuminate\Support\Facades\DB::unprepared(" DROP TRIGGER IF EXISTS trigger_name; "); } }
## Write a view: <?php use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; class CutletView extends Migration { /** * Run the migrations. * * @return void */ public function up() { \Illuminate\Support\Facades\DB::unprepared(" DROP VIEW IF EXISTS view_name; CREATE [OR REPLACE] VIEW [db_name.]view_name [(column_list)] AS -- select-statement; "); } /** * Reverse the migrations. * * @return void */ public function down() { \Illuminate\Support\Facades\DB::unprepared(" DROP VIEW IF EXISTS view_name; "); } }
如何在控制器或仓库中使用函数、存储过程、触发器和视图
## Use functions: $cutlet = DB::select('select cutletFunction(?,?) as cutletField', [$request->param1, $request->param2]); // or .. ## Use procedures $cutlets = DB::select('call cutletProcedure(?)', [$request->param1]); or .. ## Use triggers: // It's execute auto in mysql level ## Use views: $cutlets = DB::table('cutletView');
要求
- PHP v7.0或更高版本
- Laravel v5.8或更高版本