如何在没有工匠的情况下运行 laravel 迁移(使用代码)

Posted

技术标签:

【中文标题】如何在没有工匠的情况下运行 laravel 迁移(使用代码)【英文标题】:How to run laravel migrations without artisan (using code) 【发布时间】:2017-11-20 09:07:39 【问题描述】:

我最近在共享主机上托管了一个 laravel 项目(为客户),在尝试通过 ssh 访问服务器失败后,我联系了主机,告诉我 ssh 服务不适用于我的客户托管计划,这意味着我无法访问终端,也无法使用工匠。我知道如何编写一个将创建 sql 表的 php 脚本,但在此之前,我想知道 laravel 是否有一个快捷方式,因为迁移(表)已经定义。我想要的是创建一条路线project.com/run_migrations 来完成这项工作!提前致谢

【问题讨论】:

【参考方案1】:

您可以像这样在 PHP 中轻松创建一个小型 Artisan 脚本:

Artisan::call('migrate');

这等于php artisan migrate。在您想运行迁移的任何地方使用它。

如果您处于生产模式(如果 APP_ENV=production 在您的 .env 文件中),那么您必须强制迁移,以防您希望允许进行更改。你可以这样做:

Artisan::call('migrate', ["--force" => true ]);

这等于在php artisan migrate --force 中添加--force 标志。

不过,要回答您的具体问题,请创建如下路线:

Route::get('/run-migrations', function () 
    return Artisan::call('migrate', ["--force" => true ]);
);

如果您对创建 Web 安装程序感兴趣,您可能会对这个包感兴趣:

https://github.com/Froiden/laravel-installer

查看代码以了解他如何处理迁移和种子等。

【讨论】:

以上是关于如何在没有工匠的情况下运行 laravel 迁移(使用代码)的主要内容,如果未能解决你的问题,请参考以下文章

工匠跳过迁移

Laravel工匠迁移不创建新表

如何在没有 php artisan serve 的情况下设置 React-Laravel 项目?

Laravel 5.2 工匠“迁移”不起作用

PHP工匠迁移不创建新表

Laravel 5.7 工匠迁移