【发布时间】:2019-09-07 08:44:13
【问题描述】:
众所周知,在 Laravel 中 config/database.php 是一堆 arrays 和 values。但是在某些情况下,我需要在那里做一些逻辑,我设法在config/database.php 中做一些简单的逻辑,它可以按我的意愿工作(可以参考下面的代码),但我想知道它是否很好/实用这样做?
如果不实用,您能否建议获得与以下相同结果的其他方法?
'connections' => [
'mysql' => (function(){
$config = [
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'live_db'),
'username' => env('DB_USERNAME', 'myuser'),
'password' => env('DB_PASSWORD', '2309423234'),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => 'gn_',
//'prefix_indexes' => true,
'strict' => false,
'engine' => env('DB_ENGINE', null),
];
// do some logic here (and it's working!!)
// but........
// is it okay to do like this?
if(env('DB_WITH_SSLMODE', false)){
$config += [
'sslmode' => env('DB_SSLMODE', 'prefer'),
'options' => [
PDO::MYSQL_ATTR_SSL_CA => env('DB_OPT_MYSQL_ATTR_SSL_CA', 'C:\wamp64\bin\cloudsql\certificates\server-ca.pem'),
PDO::MYSQL_ATTR_SSL_CERT => env('DB_OPT_MYSQL_ATTR_SSL_CERT', 'C:\wamp64\bin\cloudsql\certificates\client-cert.pem'),
PDO::MYSQL_ATTR_SSL_KEY => env('DB_OPT_MYSQL_ATTR_SSL_KEY', 'C:\wamp64\bin\cloudsql\certificates\client-key.pem'),
PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT => env('DB_OPT_MYSQL_ATTR_SSL_VERIFY_SERVER_CERT', false)
],
];
}
return $config;
})(),
],
【问题讨论】: