我想在应用程序连接到数据库之前询问用户是否有DB凭证(在CLI上)。
示例:
> php artisan db:administrate
> Please enter DB username:
> dbUser
> Please enter the DB password:
> ******
然后,如果凭证正常,则会触发AdministrateCommand的handle()方法。
用Laravel可以做到吗?
任何线索的想法都会非常感激:)
提前感谢。
度过愉快的一天。
答案 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]);
现在,如果用户输入了错误的凭据,他将无法从数据库中获取任何内容。