如何在配置文件中进行数据库查询?

Chr*_*ris 2 php laravel

我正在努力弄清楚如何在 Laravel 配置文件中进行数据库查询。

我目前使用:

<?php
// config/database.php

$results = \Illuminate\Support\Facades\DB::select( \Illuminate\Support\Facades\DB::raw("select version()") );
$mysql_version =  $results[0]->{'version()'};
dd($mysql_version);

return [

...
Run Code Online (Sandbox Code Playgroud)

但我收到的错误是:

RuntimeException in Facade.php line 218:
A facade root has not been set.
in Facade.php line 218
at Facade::__callStatic('raw', array('select version()')) in database.php line 2
at require('/Users/test/code/clooud/config/database.php') in LoadConfiguration.php line 70
at LoadConfiguration->loadConfigurationFiles(object(Application), object(Repository)) in LoadConfiguration.php line 39
at LoadConfiguration->bootstrap(object(Application)) in Application.php line 208
at Application->bootstrapWith(array('Illuminate\\Foundation\\Bootstrap\\LoadEnvironmentVariables', 'Illuminate\\Foundation\\Bootstrap\\LoadConfiguration', 'Illuminate\\Foundation\\Bootstrap\\HandleExceptions', 'Illuminate\\Foundation\\Bootstrap\\RegisterFacades', 'Illuminate\\Foundation\\Bootstrap\\RegisterProviders', 'Illuminate\\Foundation\\Bootstrap\\BootProviders')) in Kernel.php line 160
at Kernel->bootstrap() in Kernel.php line 144
at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 116
at Kernel->handle(object(Request)) in index.php line 57
at require('/Users/test/code/clooud/public/index.php') in server.php line 128
Run Code Online (Sandbox Code Playgroud)

如何确保此查询产生输出并解决此错误?

谢谢你的帮助!

jfa*_*ich 6

在您的config/database.php文件中保留默认值或空值。创建一个新的服务提供者(使用 artisan 命令或手动)

php artisan make:provider DatabaseConfigProvider
Run Code Online (Sandbox Code Playgroud)

然后将新的提供程序添加到文件中的$providers数组中config/app.php

最后将以下代码添加到boot()方法中。

public function boot()
{
    $result= \DB::select('select version() as version')[0];
    $this->app['config']->put('database.connections.mysql.version', $result->version);
}
Run Code Online (Sandbox Code Playgroud)

put()参数中的键可以是任何你想要的。