Class 'App\Http\Controllers\Artisan' 在 Laravel 5 中找不到
Class 'App\Http\Controllers\Artisan' not found in Laravel 5
我在新 Laravel 并尝试通过编码来学习。我创建了 migration 和 seed,当我从终端调用它们时都工作正常,但我想在我的 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;
相反。
当您仅引用 class 时 Artisan::call('db:seed')
PHP 在您的 当前命名空间 中搜索 class。
在本例中是 App\Http\Controllers
。但是 Artisan
class 显然不存在于控制器的命名空间中,而是存在于 Laravel 框架命名空间中。它还有一个位于 global 命名空间中的别名。
您可以通过在根命名空间前加上反斜杠来引用别名:
return \Artisan::call('db:seed');
或在顶部添加导入语句:
use Artisan;
我在新 Laravel 并尝试通过编码来学习。我创建了 migration 和 seed,当我从终端调用它们时都工作正常,但我想在我的 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;
相反。
当您仅引用 class 时 Artisan::call('db:seed')
PHP 在您的 当前命名空间 中搜索 class。
在本例中是 App\Http\Controllers
。但是 Artisan
class 显然不存在于控制器的命名空间中,而是存在于 Laravel 框架命名空间中。它还有一个位于 global 命名空间中的别名。
您可以通过在根命名空间前加上反斜杠来引用别名:
return \Artisan::call('db:seed');
或在顶部添加导入语句:
use Artisan;