QueryException: общая ошибка: 1 нет такой таблицы: {table_name} (SQL: выберите * из "{table_name}") - PullRequest
0 голосов
/ 31 декабря 2018
  • Версия Laravel: 5.7
  • Версия PHP: 7.2
  • Драйвер базы данных: sqlite
  • База данных: память

Все тестированиена PHPUnit работал полностью нормально.Но когда я добавил View::share в AppServiceProvider, все тесты PHPUnit завершились неудачей.

AppServiceProvider.php

class AppServiceProvider extends ServiceProvider
{
    public function boot()
    {
        \View::share('categories', \App\Models\Category::all());
    }
}

Ошибка

Освещение \ База данных \ QueryException: SQLSTATE [HY000]: Общая ошибка: 1 нет такой таблицы: категории (SQL: выбрать * из "категорий")

У меня уже естьиспользовал RefreshDatabase во всех моих тестах.

Пожалуйста, направьте меня, как я могу это исправить.Куда мне следует позвонить View::share в приложении Laravel, поэтому все тесты должны пройти.

1 Ответ

0 голосов
/ 31 декабря 2018

Это происходит из-за того, что база данных, возможно, даже не существует, и загрузка провайдера предполагает, что база данных / таблица запущена и работает.

Закрепите его немного, обернув его

class AppServiceProvider extends ServiceProvider
{
    public function boot()
    {
       if(\Schema::hasTable('categories'){
        \View::share('categories', \App\Models\Category::all());
       }
    }
}
...