迁移在Laravel 5.1包中的位置?

问题描述 投票:5回答:3

好吧,我确实有一个包装,我只和我的系统一起使用。我确实有该软件包的迁移(它是在Laravel 4.2上构建的,我正在升级它)。

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

你们有谁知道怎么处理这个吗?

更新:

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

laravel laravel-5.1 laravel-migrations
3个回答
4
投票

你可以把它放在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


0
投票

更新了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");


-1
投票

要创建一个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'来实现。

© www.soinside.com 2019 - 2024. All rights reserved.