【发布时间】:2016-03-17 14:02:48
【问题描述】:
我使用工匠 tinker 控制台制作大型物体。 从该对象返回的方法输出不完全适合 Artisan Tinker 控制台。我想把它保存到文件中。但是怎么做?我用的是linux。
【问题讨论】:
-
您始终可以在 tinker
Log::info('object', $yourLargeObject);中使用记录器
标签: php bash laravel laravel-artisan
我使用工匠 tinker 控制台制作大型物体。 从该对象返回的方法输出不完全适合 Artisan Tinker 控制台。我想把它保存到文件中。但是怎么做?我用的是linux。
【问题讨论】:
Log::info('object', $yourLargeObject); 中使用记录器
标签: php bash laravel laravel-artisan
从 Linux/MAC OSX 命令行试试这个:
php artisan tinker | tee /tmp/tinker.out
完成后,您的输出应该在/tmp/tinker.out 中。
【讨论】:
我在为自己寻找答案时发现了您的问题,并通过外部 API 工具(在本例中为 QuickBooks Online)进行了一些临时报告。
查看 Laravel 5.8 的文档,最直接的写入文件的方法是使用 laravel 的存储引擎。
第 1 步
确保您已激活存储驱动程序。这是在/config/filesystems.php 中完成的,我使用了local,因为我会在报告完成后再次停用它。
第 2 步
如果你正在使用一个类或方法,你可以导入存储,否则只需在 tinker 中调用存储模块。
我使用json_encode() 和JSON_PRETTY_PRINT 来使我的数据易于阅读:
这个例子对我有用:
Storage::disk('local')->put('customer_data.json', json_encode((array) $result, JSON_PRETTY_PRINT));
参考资料:
Lararacasts 问:https://laracasts.com/discuss/channels/laravel/how-to-write-texts-to-file-in-laravel?page=1
【讨论】:
Storage Facade 很棒,但配置 shiz 很糟糕......只需使用 php 原生函数 file_put_contents() 并在服务器上任何您有权限的地方写入(/tmp/ 效果很好)。
$object = mySweetMethodThatRetrievesAwesomelyLargeObject();
file_put_contents('/tmp/my-large-object.obj', json_encode($object, JSON_PRETTY_PRINT));
【讨论】: