1

所以我有一个自定义包,我在我的项目中使用它,它有很多迁移。该软件包包含许多迁移和种子。

在包的服务提供者中,我像这样加载迁移:

$this->loadMigrationsFrom(__DIR__ . '/database/migrations/');

当我在php artisan migrate:refresh本地运行时,它就像一个魅力,运行迁移并且表安装在数据库中。但是当我在我的服务器上做同样的事情时,它没有说明什么要迁移,这令人困惑,因为相同的配置在我的宅基地环境中工作,而不是在我的生产环境中工作。

有没有其他人遇到过类似的问题或对如何解决这个问题有任何想法?

4

3 回答 3

1

可能是您的服务器上的位置不同,或者命令是从另一个地方执行的?__DIR__在最好的情况下不太可靠。

尝试通过将行更改为以下内容来抽象您的代码:

$this->loadMigrationsFrom(base_path() . '/database/migrations/');

base_path()并且app_path()在处理 Laravel 代码中的特定文件位置时很方便:)

编辑:哦还有另一种可能性:您的迁移尚未添加到您的 git 存储库中。发生在我身上的次数比我愿意承认的要多;-)

于 2016-09-08T10:12:14.363 回答
0

如果您使用的是 Git,请检查服务器上的分支是否与开发环境中的分支相同。

例如,您可能在master服务器上的分支上(默认情况下),并且您在development分支中完成了所有开发。因此,迁移仅在development分支中可见。

于 2016-09-08T08:46:40.230 回答
0

也许它应该是其中之一。

$this->loadMigrationsFrom(__DIR__ . '/../database/migrations/');

或者

$this->loadMigrationsFrom(__DIR__ . '/./database/migrations/');
于 2021-08-24T15:41:18.560 回答