À l'aide de l'Artisan::call() pour passer des arguments sans options
Dans le shell, je peux créer une base de données de migration (par exemple) comme suit:
./artisan migrate:make --table="mytable" mymigration
À l'aide de l'Artisan::call (), je ne peux pas savoir comment passer d'un non-argument paramètre ("mymigration" dans cet exemple). J'ai essayé de nombreuses variantes du code ci-dessous:
Artisan::call('db:migrate', ['--table' => 'mytable', 'mymigration'])
Quelqu'un a des idées? J'ai été en utilisant shell_exec('./artisan ..."), dans l'intervalle, mais je ne suis pas heureux avec l'approche.
OriginalL'auteur GuruBob | 2014-10-02
Vous devez vous connecter pour publier un commentaire.
Artisan::call('db:migrate', ['' => 'mymigration', '--table' => 'mytable'])
devrait fonctionner.D'ailleurs db:migrate n'est pas un artisan de la commande de la boîte. Êtes-vous sûr que c'est correct?
Déclenche une erreur dans Laravel 5.4. Je recommande Ikos réponse.
Aussi cela ne fonctionne pas avec plusieurs arguments... tableaux Associatifs doivent avoir les clés uniques....
OriginalL'auteur Bower
La solution est différente si vous êtes à l'aide de Laravel 5.1 ou une version plus récente. Maintenant, ce que vous devez faire est de vous besoin de connaître le nom qui a été donné à l'argument de la commande sa signature. Vous pouvez trouver le nom de l'argument de votre commande shell en utilisant
php artisan help
suivi par le nom de la commande.Je pense que tu voulais dire à propos de "faire de la migration". Ainsi, par exemple
php artisan help make:migration
vous montre qu'il accepte un paramètre appelé "nom". De sorte que vous pouvez l'appeler comme ceci:Artisan::call('make:migration', ['name' => 'foo' ])
.C'est la solution qui a fonctionné parfaitement pour moi. À L'Aide De Laravel 5.3
Cela devrait être LA solution
OriginalL'auteur orrd
Dans laravel 5.1 , vous définissez des options avec/sans valeurs lors de l'appel à un Artisan de la commande à partir de votre code PHP.
dans ce cas, à l'intérieur de votre artisan de commande;
Celui-ci fait ! Merci @iko!
OriginalL'auteur iko
Je sais que cette question est assez vieux mais c'est arrivé en premier sur ma recherche Google donc je vais ajouter ici. @orrd réponse est bonne, mais je vais aussi ajouter que, pour les causes que l'utilisation d'un tableau d'arguments lorsque vous utilisez l'astérisque
*
vous devez fournir l'argument(s) en tant que tableau.Par exemple, si vous avez une commande qui utilise des arguments de type tableau avec une signature comme:
Dans ces cas, vous devez fournir les arguments dans un tableau lorsque vous l'appelez.
OriginalL'auteur Sarcastron
En vous commande de vous ajouter getArguments():
Vous pouvez utiliser les arguments:
vous appeler de commande avec les paramètres:
Pour plus d'informations, reportez-vous à cette l'article.
OriginalL'auteur Kris Roofe