我在尝试使用PHP Artisan时遇到了一个奇怪的错误。我不知道原因,甚至是哪个文件导致它。
就在不久之前,我运行php artisan migrate:reset
来清除我的数据库中的所有表。工作得很好。
然后我对一个与“阶段”表完全无关的文件进行了更改,当我尝试运行php artisan migrate
时,它会抛出错误说:
SQLSTATE[42S02]: [Microsoft][SQL Server Native Client 11.0][SQL Server]Invalid object name 'stages'. (SQL: select * from [stages] where [stages].[deleted_at] is null order by [opord] asc)
无论我尝试做什么,它都会抛出该错误,即使只输入php artisan
也会导致致命错误。
另外,如果我手动将一个名为“阶段”的表添加到数据库中,工匠不会立即失败,它会尝试迁移表,然后当它到达阶段表时失败,并且它表示失败,因为“阶段“已经存在。
我甚至不明白为什么当我只是试图迁移我的桌子时,工匠正试图执行一个选择语句;我特别不明白为什么单独运行php artisan
命令时会发生这种情况。
编辑:
我将问题追溯到我添加到app\Providers\AppServiceProvider
public function boot(){
View::share('nav_stages', Stage::opord()->get());
}
我发现了一个关于how to check if a table exists的问题,我正在努力做到这一点:
public function boot(){
if (Schema::hasTable('stages'))
{
View::share('nav_stages', Stage::opord()->get());
}else{
View::share('nav_stages', null);
}
}
答案 0 :(得分:0)
问题是由我在AppServiceProvider.php
中的一些代码引起的。在代码中我试图向DB查询整个站点上使用的导航菜单所需的数据(母版页,布局,部分观点等)。
我替换了
public function boot(){
View::share('nav_stages', Stage::opord()->get());
}
使用
public function boot(){
if (Schema::hasTable('stages'))
{
View::share('nav_stages', Stage::opord()->get());
}else{
View::share('nav_stages', null);
}
}
并添加了
use Illuminate\Support\Facades\Schema;
位于文件顶部