Laravel artisan 以编程方式 运行 带有任何参数但没有密钥的命令
Laravel artisan programmatically running command with any parameter without key
在我的申请中
,我想在 CLI 之外模拟 php artisan 命令,我在控制器中执行它。
我能拿到运行:
$execute = Artisan::call($commandPart[0], [
'companyId' => $commandPart[1]
]);
但是,如果我指定它是参数的键,它就可以工作。
同时,我想要实现的是在没有键控参数的情况下传递命令列表,因为我希望它是灵活的。
我试过了,
$execute = Artisan::call($commandPart[0], [
$commandPart[1]
]);
和
$command = 'organization:tree_readjust 1';
$execute = Artisan::call($command);
然而这两种情况都会产生错误。
有什么解决办法吗?
先谢谢你了
根据documentation The call method accepts the name of the command as the first argument, and an array of command parameters as the second argument
。所以,首先确保 $commandPart[0]
是有效的命令,你可以在第二个参数上传递数组参数。例如:
$command = 'company:delete';
$companyId = 1;
$commandPart = [$command, $companyId];
$execute = Artisan::call($commandPart[0], [
'companyId' => $commandPart[1]
]);
编辑:
你不能在没有键的情况下调用参数。为了灵活性,我认为您可以创建一些逻辑来制作数组参数并将其传递给 artisan 调用 $execute = Artisan::call($command, $params);
在您的控制器中使用该命令之前,请不要忘记添加 Artisan Facades。
use Illuminate\Support\Facades\Artisan;
在我的申请中 ,我想在 CLI 之外模拟 php artisan 命令,我在控制器中执行它。
我能拿到运行:
$execute = Artisan::call($commandPart[0], [
'companyId' => $commandPart[1]
]);
但是,如果我指定它是参数的键,它就可以工作。 同时,我想要实现的是在没有键控参数的情况下传递命令列表,因为我希望它是灵活的。
我试过了,
$execute = Artisan::call($commandPart[0], [
$commandPart[1]
]);
和
$command = 'organization:tree_readjust 1';
$execute = Artisan::call($command);
然而这两种情况都会产生错误。 有什么解决办法吗?
先谢谢你了
根据documentation The call method accepts the name of the command as the first argument, and an array of command parameters as the second argument
。所以,首先确保 $commandPart[0]
是有效的命令,你可以在第二个参数上传递数组参数。例如:
$command = 'company:delete';
$companyId = 1;
$commandPart = [$command, $companyId];
$execute = Artisan::call($commandPart[0], [
'companyId' => $commandPart[1]
]);
编辑:
你不能在没有键的情况下调用参数。为了灵活性,我认为您可以创建一些逻辑来制作数组参数并将其传递给 artisan 调用 $execute = Artisan::call($command, $params);
在您的控制器中使用该命令之前,请不要忘记添加 Artisan Facades。
use Illuminate\Support\Facades\Artisan;