如何在控制器中运行Artisan命令?用Artisan门面调用tenants:artisan指令
控制器调用租户Artisan命令的方法
首先确保你已经在控制器顶部引入Artisan门面:
use Illuminate\Support\Facades\Artisan;
在控制器方法中使用Artisan::call()方法调用即可,参数对应命令的参数和选项即可:
// 等价于原命令 php artisan tenants:artisan "migrate" --tenant=22 Artisan::call('tenants:artisan', [ 'command' => 'migrate', '--tenant' => 22 ]);
如果需要获取命令的执行结果和输出,可以使用如下写法:
// 执行命令,返回值为命令退出码,0代表执行成功 $exitCode = Artisan::call('tenants:artisan', [ 'command' => 'migrate', '--tenant' => 22 ]); // 获取命令执行的完整输出内容 $commandOutput = Artisan::output();
补充说明
- 如果你需要给租户侧的命令传递额外参数,比如强制执行迁移的
--force参数,直接写入command参数值即可,示例:'command' => 'migrate --force' - 不建议在公网可访问的接口中直接调用迁移命令,避免数据风险,仅建议在内部管理场景使用该逻辑
注意:web进程运行用户需要拥有对应租户数据库的读写操作权限,否则会出现迁移执行失败的问题
内容的提问来源于stack exchange,提问作者Isaac Arcilla
相关产品推荐
相关产品推荐

