在我的Laravel应用程序中,我运行
php artisan languages:export
我根据csv
表格成功导出languages
个文件。
但目标是利用Laravel中的Artisan::call,但是当我在我的代码中执行此操作时
$export = Artisan::call('languages:export');
我不断收到0
作为$export
变量的结果 - 当然没有导出文件。
现在我尝试通过shell_exec() and exec()
$cmd = 'php '.base_path().'/artisan languages:export';
$export = shell_exec($cmd);
我发现任何一个都没有生成。
从命令行界面,我运行
php / Applications / MAMP / htdocs / code / artisan languages:export
我看到了我的csv文件。
如何通过代码调用artisan命令?
答案 0 :(得分:8)
您的控制台命令不会以这种方式返回CSV文件,因为这不是控制台命令的工作方式。您获得0
这一事实实际上是一个好的控制台土地(这意味着它完成而不会抛出错误)。
你的电话是正确的,你的期望是错的。您需要更改自己的方法,但是您需要使用$export
。如果要实际访问新创建的CSV,请查看phpleague/csv
包和/或内置fopen
命令。如果您只是想知道它已成功完成,那么只需取消0
即可。
答案 1 :(得分:7)
尝试通过调用来检查输出
dd(Artisan::output());
后
$export = Artisan::call('languages:export');
答案 2 :(得分:4)
您还可以使用php artisan languages:export
作为参数尝试exec()
函数。在这种情况下,您可能需要在命令前面包含正确的路径。
我还发现函数Artisan::command
而不是调用,也许这有用吗?
答案 3 :(得分:0)
Artisan:call()支持$ outputBuffer参数,您尝试吗?
$parameters = [];
$outputBuffer = null;
Artisan::call('languages:export', $parameters, $outputBuffer);