【问题标题】:Where to put migration within a Laravel 5.1 package?将迁移放在 Laravel 5.1 包中的什么位置?
【发布时间】:2016-02-25 16:54:48
【问题描述】:

嗯,我确实有一个包,我只与我的系统一起使用。我确实有那个包的迁移(它是在 Laravel 4.2 上构建的,我正在升级它)。

话虽这么说:在我的包中(以前的工作台)在 Laravel 5.1 上,我在哪里放置以及如何运行我的迁移?

你们中有人知道如何处理吗?

更新

这不是简单迁移的情况。回到 laravel 4.*,我们能够维护每个包的迁移(如果需要的话),而且我确实有一些迁移由我自己的包保存,在它自己的数据库中,有它自己的表。所以...我需要它是 PACKAGE 的迁移,而不是 ROOT INSTALATION 的迁移。

【问题讨论】:

  • 完整阅读this
  • 我想我做到了! (在你指出之前,我确信我做到了……现在我不敢保证!)
  • 您要创建migration 还是运行migration
  • 两者都有!但是,我已经有了它们。只想运行,或者更进一步,创建。
  • 是的,vendor:publish 只是将视图复制到 /views 并迁移到 /database/migrations - 因此,在发布后,我们仍然需要运行 php artisan migrate。最后,就像将它们放在迁移文件夹中一样。我错了吗?

标签: laravel laravel-5.1 laravel-migrations


【解决方案1】:

你可以把它放在packages/.../src/migrations。 运行它:

  1. 你可以在 composer.json 中插入:

"autoload": { "classmap": [ "database", "packages/.../src/migrations" ],

  1. 或者直接打电话:

    • Laravel 4.x php artisan migrate --package="{vendor}/{name}"
    • Laravel 5.x php artisan migrate --path=/packages/.../migrations

更多信息:查看this blog from websanova.com

【讨论】:

【解决方案2】:

Laravel 5.6+ 的更新答案

https://laravel.com/docs/5.6/packages#migrations 说:

如果您的包包含数据库迁移,您可以使用 loadMigrationsFrom 方法通知 Laravel 如何加载它们。这 loadMigrationsFrom 方法接受包的路径 迁移作为其唯一的论点:

/**
 * Perform post-registration booting of services.
 *
 * @return void
 */
public function boot()
{
    $this->loadMigrationsFrom(__DIR__.'/path/to/migrations');
}

一旦您的包的迁移被注册,它们将 php artisan migrate 命令时自动运行 执行。您不需要将它们导出到应用程序的主 数据库/迁移目录。

正斜杠很重要。就我而言,我使用的是:$this->loadMigrationsFrom(__DIR__ . "/migrations");

【讨论】:

    【解决方案3】:

    创建migration

    1. 转到command prompt 找到您的项目根文件夹并运行以下命令:php artisan make:migration yourMigrationFileName --create=tableName
    2. 您可以在yourProjectFolder\database\migrations\timestamp_yourMigrationFileName.php 中找到您的迁移文件
    3. 创建您的表格。

    运行migration

    1. 转到command prompt 找到您的项目根文件夹并运行以下命令:php artisan migrate

    别忘了在Model 中声明您的表名。你可以通过在你的模型中写protected $table = 'tableName'来做到这一点。

    【讨论】:

    • 准确地说,不是某个日期,而是时间戳。
    • @Tezla 对此我很抱歉,但这不是问题所在。时间戳将由 Laravel 自己创建。
    • 这只是一个标准迁移。其中我在文档上阅读过。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-21
    • 2016-02-10
    • 2014-04-27
    • 2021-11-20
    • 2016-07-06
    • 1970-01-01
    • 2016-03-11
    相关资源
    最近更新 更多