Laravel CLI - 使用提示的凭据连接到DB

时间:2016-10-13 11:42:12

标签: php laravel-5 command-line-interface

我想在应用程序连接到数据库之前询问用户是否有DB凭证(在CLI上)。

示例:

> php artisan db:administrate

> Please enter DB username:
> dbUser

> Please enter the DB password:
> ******

然后,如果凭证正常,则会触发AdministrateCommand的handle()方法。

用Laravel可以做到吗?

任何线索的想法都会非常感激:)

提前感谢。

度过愉快的一天。

1 个答案:

答案 0 :(得分:0)

好的,我找到了解决方案。

就是这样:

    // This is my database.php 
    'connections' => [
        'sqlsrv' => [
            'driver' => 'sqlsrv',
            'host' => env('DB_HOST'),
            'database' => env('DB_DATABASE'),
            'username' => env('DB_USERNAME'),
            'password' => env('DB_PASSWORD'),
            'charset' => 'utf8',
            'prefix' => '',
            'schema' => 'public',
            'sslmode' => 'prefer',
        ],    
    ],

然后在我的命令文件中

    $connectionName = 'sqlsrv';

    $dbUser = $this->ask('DB username: ');
    $dbPassword = $this->secret('DB password: ');

    // get the current database configuration
    $connectionConfig = \Config::get("database.connections");

    // update the credential
    $connectionConfig[$connectionName]['username'] = $dbUser;
    $connectionConfig[$connectionName]['password'] = $dbPassword;

    // update the DB connection.
    \Config::set("database.connections.".$connectionName."", $connectionConfig[$connectionName]);

现在,如果用户输入了错误的凭据,他将无法从数据库中获取任何内容。