我正在创建一个简单的生成器,它可以帮助我完成模型,控制器,视图,路径,迁移,只需几行简单的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
仍然无法检测文件以在没有数字的情况下迁移它。那我怎么能这样做呢?
答案 0 :(得分:1)
它不是一个数字,它的当前时间戳,如143710.所以,你可以尝试这样的东西来获得它:
Carbon::now()->format('His');
答案 1 :(得分:1)
它是Laravel的内置机制。只要您创建迁移, naming_convention 就会看起来像时间戳和您的表名。
否则您可以使用Laravel Generator
。或者您可以使用碳时区。
答案 2 :(得分:1)
如果您想知道迁移命名文件的实际格式,您应该查看 Illuminate \ Database \ Migrations \ MigrationCreator 文件。您猜测作为排序的数字实际上是一个时间戳,您可以在该文件的以下函数中找到该时间戳:
protected function getDatePrefix()
{
return date('Y_m_d_His');
}
以下是完整的文件名创建功能:
protected function getPath($name, $path)
{
return $path.'/'.$this->getDatePrefix().'_'.$name.'.php';
}
希望它有所帮助。