繁体   English   中英

如何手动创建laravel迁移文件

[英]How to create a laravel migration file manually

我正在创建一个简单的生成器,它将通过几行YAML来帮助我创建模型,控制器,视图,路由,迁移。 到目前为止,一切看起来都很不错,但是我遇到了问题,并进行了很多搜索,但仍然一无所获。

我的工具生成了一个迁移文件,问题是迁移文件名必须遵循特定的规则,以便php artisan migrate命令可以检测到该文件并将其迁移。

文件名必须以年,月,日和数字开头,然后是迁移的描述。 例如。 2014_10_12_000000_create_users_table.php 2014_10_12_100000_create_password_resets_table.php现在,将日期放在文件开头很容易,但是如何遵循数字规则? 每个新迁移文件的数量增加一。

如何检测上一个创建的最后一个文件以了解其编号,并创建一个新的迁移文件,其编号要大于上一个创建的迁移文件?

同时,我使用此代码创建迁移文件名。

$migrationFileName = date('y').'_'.date('m').'_'.date('d').'_'.'create'.ucfirst($name).'Table';

但是命令php artisan migrate仍然无法检测到没有编号的文件即可进行迁移。 那我该怎么办呢?

它不是数字,是当前的时间戳,例如143710。因此,您可以尝试执行以下操作:

Carbon::now()->format('His');

这是Laravel的内置机制。 创建迁移后, naming_convention看起来就像时间戳记和表名一样。

否则,您可以使用Laravel Generator 或者您可以使用Carbon时区。

如果您想知道迁移文件的命名实际上是什么格式,则应查看Illuminate \\ Database \\ Migrations \\ MigrationCreator文件。 您猜测的数字实际上是一个时间戳,您可以在该文件的以下函数中找到该时间戳:

protected function getDatePrefix()
{
    return date('Y_m_d_His');
}

以下是完整的文件名创建功能:

protected function getPath($name, $path)
{
    return $path.'/'.$this->getDatePrefix().'_'.$name.'.php';
}

希望能帮助到你。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM