【发布时间】:2021-10-28 23:13:00
【问题描述】:
我正在编写一个 Laravel 包,在其服务提供者中,该包使用以下代码接收要发布的迁移列表:
protected function publishMigrations(array $publishables): void
{
// Generate a list of migrations that have not been published yet.
$migrations = [];
foreach($publishables as $publishable)
{
// Migration already exists, continuing
if(class_exists($publishable)){
continue;
}
$file = Str::snake($publishable) . '.php';
$migrations[self::MIGRATIONS_PATH . $file . '.stub'] = database_path('migrations/'.date('Y_m_d_His', time())."_$file");
}
$this->publishes($migrations, 'migrations');
}
包的$publishables 示例如下:
$publishables = ['CreateAuthenticationsTable', 'CreateCustomersTable', 'CreateTransactionsTable'];
代码确实按预期工作,发布了我打算发布的迁移,但是,我试图避免使用class_exists($publishable) 行两次发布相同的迁移。据我了解,Laravel MediaLibrary 正在使用相同的方法。但我猜在发布资产时不会加载迁移,因为那段代码永远不会运行。 (class_exists 一直为假)
有没有办法可以跟踪已发布的迁移?这是自动加载问题吗?
【问题讨论】:
标签: php laravel laravel-package