私は新しい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);
}
正しい名前空間をロードすれば、このエラーを回避できると思いますが、よくわかりません。
Config /app.phpにデフォルトのArtisan
エイリアスが設定されていると仮定すると、正しい名前空間をインポートするだけで済みます。
ファイルの次の先頭を追加します。
use Artisan;
または、コードで完全修飾名前空間を使用します。
$migrate = \Artisan::call('migrate');
なんらかの理由でエイリアスが設定されていない場合は、
use Illuminate\Support\Facades\Artisan;
代わりに。
Artisan::call('db:seed')
PHPのようなクラスを参照するだけで、現在の名前空間でクラスが検索されます。
この場合、それはApp\Http\Controllers
。ただし、Artisan
クラスは明らかにコントローラーの名前空間には存在せず、Laravelフレームワーク名前空間に存在します。にあるエイリアスもあります。 )global名前空間。
バックスラッシュを前に付けることで、ルート名前空間のエイリアスを参照できます。
return \Artisan::call('db:seed');
または、上部にインポートステートメントを追加します。
use Artisan;