使用 Artisan::call() 传递非选项参数

2022-08-30 16:20:49

在 shell 中,我可以创建一个数据库迁移(例如),如下所示:

./artisan migrate:make --table="mytable" mymigration

使用 Artisan::call() 我无法弄清楚如何传递非参数参数(在本例中为“mymigration”)。我尝试了以下代码的许多变体:

Artisan::call('db:migrate', ['--table' => 'mytable', 'mymigration'])

有人有什么想法吗?在此期间,我一直在使用shell_exec('./artisan ...'),但我对这种方法不满意。


答案 1

在拉拉维尔之前 5

Artisan::call('db:migrate', ['' => 'mymigration', '--table' => 'mytable']).

拉拉维尔 5 起

Artisan::call('db:migrate', ['argument-name-as-defined-in-signature-property-of-command' => 'mymigration', '--table' => 'mytable']).

有关更多详细信息,请参阅其他答案。


答案 2

在 laravel 5.1 中,当从 PHP 代码调用 Artisan 命令时,您可以设置带/不带值的选项。

Artisan::call('your:commandname', ['--optionwithvalue' => 'youroptionvalue', '--optionwithoutvalue' => true]);

在这种情况下,在您的工匠指挥范围内;

$this->option('optionwithvalue'); //returns 'youroptionvalue'

$this->option('optionwithoutvalue'); //returns true

推荐