2017-06-28 6 views
13

説明

を働いていない、私はコール職人コマンドは私のLaravelアプリケーションで

php artisan languages:export 

を実行私は正常に私のlanguagesテーブルの上にベースをエクスポートするcsvファイルを得ました。

しかしゴールはLaravelからこのArtisan::callを活用することであるが、私は自分のコード

$export = Artisan::call('languages:export'); 

結果

でこれをやったときに私は$export変数の私の結果として0取得保管 - もちろんファイルはエクスポートされていません


更新

今私は、私はいずれか一方に生成された何も見えないshell_exec() and exec()

$cmd = 'php '.base_path().'/artisan languages:export'; 
$export = shell_exec($cmd); 

を経由して、それを呼び出すようにしてみてください。輸出

私は私のcsvファイルが生成されました:コマンドラインインタフェースから

は、私が

PHP /アプリケーション/ MAMP/htdocsに/コード/職人の言語を実行します。


コードで職人のコマンドを呼び出す方法はありますか?

+1

APIドキュメントごとに、 'Artisan :: call'の結果はintです。私はそれが終了コードだと思うし、ゼロ(bashスクリプトと同様)は正常終了を示しています。 – ceejayoz

+0

@ceejayoz:あなたの精緻化と私の考えの修正に感謝します。 – ihue

+0

私はまだ非常に不思議ですが、コマンドラインでartisanコマンドを実行してもコード内では動作しないのはなぜですか。 – ihue

答えて

4

php artisan languages:exportをパラメータとしてexec()関数を試すこともできます。その場合は、コマンドの前に正しいパスを含める必要があります。

私はまた、電話の代わりにArtisan::commandという機能を見つけました。それは、コンソールコマンドの動作方法ではありませんので、

+0

私はそれを試すことができますが、実際の目標は、Laravel 'Artisan :: call'で動作させることです。 – ihue

+0

私の更新を見る、私はそれを試して、それを呼び出すようではありません。 – ihue

5

dd(Artisan::output()); を呼び出すことにより、出力をチェックしてみ $export = Artisan::call('languages:export');

+0

私はそれを試みることができます。 – ihue

8

後にあなたのコンソールコマンドは、そのようにCSVファイルを返却するつもりはありません。あなたが0を手に入れているという事実は、実際にはコンソールランド(それはエラーを投げずに完了したことを意味します)です。

あなたの電話は正しいです、あなたの期待は間違っています。 $exportを消費しているにもかかわらず、アプローチを変更する必要があります。新しく作成したCSVに実際にアクセスする場合は、phpleague/csvパッケージおよび/またはfopenビルトインコマンドを参照してください。それが正常に完了したことを知りたいだけならば、それを成功として、0にしてください。

+0

私の思考と期待を訂正してくれてありがとう。しかし、私はまだ1つの疑いがあります。なぜphpleague/csvを調べる必要がありますか?私のコードはすでにそれをしました。私はすでにそれを行う方法を知っています。 ** php artisan languages:export **をCLIで実行すると動作しますが、コードから実行すると動作しません。それは私がファイルをエクスポートする方法には何もありません。 – ihue

+0

CSVファイルを読み書きするには良いツールなので、私はそれを言います。 – Shauna

関連する問題