web-dev-qa-db-ja.com

クラス 'App \ Http \ Controllers \ Artisan'がLaravel 5に見つかりません

私は新しいLaravelで、コーディングによって学習しようとしています。移行とシードを作成し、ターミナルから呼び出すと両方とも正常に機能しますが、HomeControllerでこのコードを試してみました。大きなエラー。

エラー

FatalErrorException in HomeController.php line 23: 
Class 'App\Http\Controllers\Artisan' not found

ホームコントローラーのコード

$hasTable = Schema::hasTable('users');      

if ($hasTable==0)
        {
            echo "call cli to migration and seed";

            $migrate = Artisan::call('migrate');
            $seed = Artisan::call('db:seed');

            echo "Migrate<br>";

            print_r($migrate);
            echo "Seed<br>";
            print_r($seed);
        }

正しい名前空間をロードすれば、このエラーを回避できると思いますが、よくわかりません。

13
Ariful Haque

Config /app.phpにデフォルトのArtisanエイリアスが設定されていると仮定すると、正しい名前空間をインポートするだけで済みます。

ファイルの次の先頭を追加します。

use Artisan;

または、コードで完全修飾名前空間を使用します。

$migrate = \Artisan::call('migrate');

なんらかの理由でエイリアスが設定されていない場合は、

use Illuminate\Support\Facades\Artisan;

代わりに。

27
Clive

Artisan::call('db:seed') PHPのようなクラスを参照するだけで、現在の名前空間でクラスが検索されます。

この場合、それはApp\Http\Controllers。ただし、Artisanクラスは明らかにコントローラーの名前空間には存在せず、Laravelフレームワーク名前空間に存在します。にあるエイリアスもあります。 )global名前空間。

バックスラッシュを前に付けることで、ルート名前空間のエイリアスを参照できます。

return \Artisan::call('db:seed');

または、上部にインポートステートメントを追加します。

use Artisan;
3
Limon Monte