【问题标题】:How to run laravel migrations without artisan (using code)如何在没有工匠的情况下运行 laravel 迁移(使用代码)
【发布时间】:2017-11-20 09:07:39
【问题描述】:
我最近在共享主机上托管了一个 laravel 项目(为客户),在尝试通过 ssh 访问服务器失败后,我联系了主机,告诉我 ssh 服务不适用于我的客户托管计划,这意味着我无法访问终端,也无法使用工匠。我知道如何编写一个将创建 sql 表的 php 脚本,但在此之前,我想知道 laravel 是否有一个快捷方式,因为迁移(表)已经定义。我想要的是创建一条路线project.com/run_migrations 来完成这项工作!提前致谢
【问题讨论】:
标签:
php
sql
laravel-5
laravel-artisan
laravel-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
查看代码以了解他如何处理迁移和种子等。