您好,有没有最简单,最好的方法来检查服务提供商内部是否存在表?
这是服务提供程序内部的一种情况,可以说在引导功能下的此类的AuthServiceProvider内部,正在完成表记录检索。但是现在的问题是,如果该表不存在怎么办?那那行代码会失败吗?
因此,以某种方式运行php artisan migrate
时,将执行服务提供程序中的代码(我认为情况并非如此)。因此,当我尝试迁移时,将引发错误,并且迁移命令将失败,因为该表尚不存在。在下面更加清楚的是可能的情况
// MyServiceProvider
class MyServiceProvider extends ServiceProvider
{
public function boot()
{
$my_table_record = MyTable::with('connectTable')->get(); <<-- this throws an error when running php artisan migrate since MyTable does not exist yet
}
}
我可以通过添加如下所示的Schema导入来检查表是否已经存在来解决此问题
// MyServiceProvider
use Illuminate\Support\Facades\Schema;
class MyServiceProvider extends ServiceProvider
{
public function boot()
{
if (Schema::hasTable('my_table')) {
$my_table_record = MyTable::with('connectTable')->get();
}
}
}
第二个代码解决了这个问题,但是我正在寻找一种更优雅的方法。有什么想法吗?希望有任何建议