[英]Laravel: How to create migration file for drop multiple columns from a table?
[英]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.