在shell中,我可以创建一个数据库迁移(例如),如下所示:
./artisan migrate:make --table="mytable" mymigration
使用Artisan::call(),我无法解决如何传递非参数参数(本例中为“mymigration”)。我尝试了下面代码的许多变体:
Artisan::call('db:migrate', ['--table' => 'mytable', 'mymigration'])
有人有什么主意吗?我一直在使用shell_exec('./artisan...'),但我对这种方法不满意。
7条答案
按热度按时间t9eec4r01#
Laravel 5之前
Laravel 5及以上版本
请参阅其他答案了解更多详情。
qvk1mo1f2#
在laravel 5.1中,当从PHP代码调用Artisan命令时,可以设置带/不带值的选项。
在这种情况下,在您的工匠命令中;
1mrurvl13#
如果你使用的是Laravel 5.1或更新版本,解决方案会有所不同。现在你需要做的是知道命令签名中参数的名字。您可以在命令shell中使用
php artisan help
后跟命令名来查找参数的名称。我想你是想问“制造:移民”。例如,
php artisan help make:migration
显示它接受一个名为“name”的参数。所以你可以这样称呼它:Artisan::call('make:migration', ['name' => 'foo' ])
。0pizxfdo4#
我知道这个问题已经很老了,但这是我在谷歌搜索中首先出现的,所以我将在这里添加这个。@orrd的答案是正确的,但我还要补充一点,对于使用参数数组的情况,如果你使用星号
*
,你需要将参数作为数组提供。例如,如果你有一个命令,它使用带有签名的数组参数,如:
在这些情况下,您需要在调用数组时提供数组中的参数。
bvk5enib5#
在命令中添加getArguments():
你可以使用参数:
call you命令带参数:
有关更多信息,请参阅此article。
s8vozzvw6#
在其他替代方式中,您可以在Laravel中执行特定的迁移
6qqygrtg7#
使用