【发布时间】:2015-10-25 23:14:34
【问题描述】:
我在尝试使用 PHP Artisan 时遇到了一个奇怪的错误。我不知道原因,也不知道是哪个文件造成的。
就在片刻之前,我运行php artisan migrate:reset 来清除数据库中的所有表。工作正常。
然后我对一个与“stages”表完全无关的文件进行了更改,当我尝试运行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 也会导致该致命错误。
另外,如果我手动将一个名为“stages”的表添加到数据库中,artisan 不会立即失败,它会尝试迁移表,然后在到达 stage 表时失败,并且它说它失败了,因为“阶段”已经存在。
我什至不明白为什么 artisan 在我只是尝试迁移我的表时尝试执行 select 语句;我特别不明白为什么单独运行php artisan 命令时会发生这种情况。
编辑:
我将问题追溯到我添加到app\Providers\AppServiceProvider的一些代码
public function boot(){
View::share('nav_stages', Stage::opord()->get());
}
我发现了一个关于 how to check if a table exists 的 SO 问题,我目前正在努力解决这个问题:
public function boot(){
if (Schema::hasTable('stages'))
{
View::share('nav_stages', Stage::opord()->get());
}else{
View::share('nav_stages', null);
}
}
【问题讨论】:
标签: php laravel laravel-artisan