AuthServiceProvider中存在检查表

时间:2019-01-07 15:45:51

标签: laravel service-provider

您好,有没有最简单,最好的方法来检查服务提供商内部是否存在表?

这是服务提供程序内部的一种情况,可以说在引导功能下的此类的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();
        }
    }
}

第二个代码解决了这个问题,但是我正在寻找一种更优雅的方法。有什么想法吗?希望有任何建议

0 个答案:

没有答案