Laravel Artisan 命令行:代码里调用命令

263次阅读
没有评论

问题
除了在终端中执行一个 Artisan 命令,我可以在代码中调用一个 Artisan 命令么(比如,在路由或控制器里触发 Artisan 命令)?

解答
Artisan 门面的 call 方法
要想在代码中调用一个 Artisan 命令,可以使用 Artisan 门面的 call 方法。call 方法的第一个参数接受命令名,第二个参数接受数组形式的命令参数。返回的是命令执行的退出码:

Route::get(‘/foo’, function () {
$exitCode = Artisan::call(’email:send’, [
‘user’ => ‘zhangsan’, ‘–queue’ => ‘default’
]);

});
传递数组值
对于数组参数或数组选项,可以直接传递数组值:

Route::get(‘/foo’, function () {
$exitCode = Artisan::call(’email:send’, [
‘user’ => [‘zhangsan’, ‘lisi’], ‘–id’ => [5, 13]
]);
});
传递布尔值
开关选项可以传入 true 或 false,例如,migrate:refresh 命令的 –force 选项:

$exitCode = Artisan::call(‘migrate:refresh’, [
‘–force’ => true,
]);
整体传递
Laravel 5.8 中,你也可以将整个命令作为字符串传递给 call 方法:

Artisan::call(’email:send zhangsan –queue=default’);
参考
程序调用命令

正文完
可以使用微信扫码关注公众号(ID:xzluomor)
post-qrcode
 
评论(没有评论)