Class 'App\Http\Controllers\Artisan' not found in Laravel 5

Ariful Haque picture Ariful Haque · May 3, 2015 · Viewed 17.2k times · Source

I am in new Laravel and trying to learn by coding. I created migration and seed and both working fine when I call them from terminal, but I wanted to try this code in my HomeController and I get a big error.

Error

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

Code in Home Controller

$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);
        }

I believe, if I load the correct namespace, I can avoid this error, but I am not sure.

Answer

Clive picture Clive · May 3, 2015

Assuming you have the default Artisan alias set in your config/app.php, you're right that you just need to import the correct namespace.

Either add this top of the file:

use Artisan;

Or use a fully qualified namespace in your code:

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

If you don't have the alias set for whatever reason, use

use Illuminate\Support\Facades\Artisan;

instead.