mybizna/lucid

此包已被废弃,不再维护。作者建议使用mybizna/automigrator包代替。

在Laravel模型中声明数据库迁移和工厂定义。

24.2.002 2024-04-04 11:51 UTC

README

此包允许你在Laravel模型内部声明数据库迁移和工厂定义。

运行automigrator:migrate命令将自动将你在migration方法中做的任何更改应用到数据库,通过Doctrine DBAL。如果你使用HasNewFactory特性和definition方法,当使用-s选项时,它将使用definition方法返回的数组进行填充。

automigrator:migrate命令还将首先运行基于文件的(传统)Laravel迁移,然后运行你的模型方法迁移。如果你需要你的基于模型的迁移按特定顺序运行,你可以在你的模型中添加一个$migrationOrder属性,并赋予一个整数值(默认为0)。

安装

通过Composer要求此包

composer require mybizna/automigrator

使用方法

使用HasNewFactory特性和在模型中声明migrationdefinition方法

use Faker\Generator;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Schema\Blueprint;
use Mybizna\Automigrator\Traits\HasNewFactory;

class MyModel extends Model
{
    use HasNewFactory;

    protected $guarded = [];
    protected $migrationOrder = 1; // optional

    public function migration(Blueprint $table)
    {
        $table->id();
        $table->string('name');
        $table->timestamp('created_at')->nullable();
        $table->timestamp('updated_at')->nullable();
    }

    public function definition(Generator $faker)
    {
        return [
            'name' => $faker->name(),
            'created_at' => $faker->dateTimeThisMonth(),
        ];
    }
}

命令

迁移

migration方法中的更改应用到你的数据库

php artisan automigrator:migrate {--f|--fresh} {--s|--seed}

使用-f选项进行全新迁移,并/或使用-s选项在之后运行种子。

创建模型

创建一个包含migrationdefinition方法的模型

php artisan automigrator:model {name} {--r|--resource}

使用-r选项同时创建模型的Laravel Nova资源。

创建Nova资源

创建一个不带所有注释的Laravel Nova资源

php artisan automigrator:resource {name} {--m|--model}

使用-m选项同时创建Nova资源的模型。