bastinald / laravel-automatic-migrations
自动Laravel模型迁移。
3.0.1
2021-09-14 03:53 UTC
Requires
- doctrine/dbal: ^2.0
- laravel/framework: ^8.0
- livewire/livewire: ^2.0
This package is auto-updated.
Last update: 2024-09-14 10:14:53 UTC
README
此包允许您通过模型类中的 migration 方法指定迁移。当您运行 migrate:auto 命令时,它使用Doctrine比较您的模型 migration 方法和现有模式,并自动应用更改。
此包可以很好地与传统的Laravel迁移文件一起使用,适用于您仍然需要与模型无关的迁移的情况。当您运行 migrate:auto 命令时,它将首先运行传统迁移,然后是自动迁移。
文档
安装
通过composer要求包
composer require bastinald/laravel-automatic-migrations
用法
在您的模型中声明一个 migration 方法
namespace App\Models; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Eloquent\Model; class MyModel extends Model { public function migration(Blueprint $table) { $table->id(); $table->string('name'); $table->timestamp('created_at')->nullable(); $table->timestamp('updated_at')->nullable(); } }
运行 migrate:auto 命令
php artisan migrate:auto
命令
创建模型
创建包含 migration 方法的模型
php artisan make:amodel {class} {--force}
此命令还将创建一个定义指向模型方法的工厂。使用 --force 覆盖现有模型。
运行迁移
运行自动迁移
php artisan migrate:auto {--f|--fresh} {--s|--seed} {--force}
使用 -f 清空数据库,使用 -s 在迁移后播种,并使用 --force 在生产环境中运行迁移。
迁移顺序
您可以通过在模型中添加公共 migrationOrder 属性来指定运行模型迁移的顺序。这对于枢纽表或必须先创建某个表再创建另一个表的情况很有用。
class MyModel extends Model { public $migrationOrder = 1; public function migration(Blueprint $table) { $table->id(); $table->string('name'); $table->timestamp('created_at')->nullable(); $table->timestamp('updated_at')->nullable(); } }
migrate:auto 命令将按指定的顺序运行自动迁移。如果未声明模型顺序,则默认为 0。感谢 @vincentkedison 提出此想法。
发布占位符
通过发布包文件使用您自己的模型和工厂占位符
php artisan vendor:publish --tag=laravel-automatic-migrations
更新 config/laravel-automatic-migrations.php 中的 stub_path
'stub_path' => resource_path('stubs/vendor/laravel-automatic-migrations'),
现在编辑 resources/stubs/vendor/laravel-automatic-migrations 内的占位符文件。命令将现在使用这些占位符文件来创建模型和工厂。