如何手动创建laravel迁移文件

Ahm*_*sam 5 php laravel

我正在创建一个简单的生成器,它将通过几行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';
Run Code Online (Sandbox Code Playgroud)

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

sha*_*a-1 5

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

protected function getDatePrefix()
{
    return date('Y_m_d_His');
}
Run Code Online (Sandbox Code Playgroud)

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

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

希望能帮助到你。


Ale*_*nin 1

它不是一个数字,而是当前时间戳,例如 143710。因此,您可以尝试这样的方法来获取它:

Carbon::now()->format('His');
Run Code Online (Sandbox Code Playgroud)