Configuración de base de datos
Nota
Consulte Bases de datos compatibles para conocer los controladores de bases de datos actualmente compatibles.
Archivo de configuración
Higgs tiene un archivo de configuración que te permite almacenar tu base de datos valores de conexión (nombre de usuario, contraseña, nombre de la base de datos, etc.). La configuración El archivo se encuentra en app/Config/Database.php. También puedes configurar valores de conexión de la base de datos en el archivo .env. Consulte a continuación para obtener más detalles.
Configuración de la base de datos predeterminada
Los ajustes de configuración se almacenan en una propiedad de clase que es una matriz con este prototipo:
<?php
namespace Config;
use Higgs\Database\Config;
class Database extends Config
{
// ...
public array $default = [
'DSN' => '',
'hostname' => 'localhost',
'username' => 'root',
'password' => '',
'database' => 'database_name',
'DBDriver' => 'MySQLi',
'DBPrefix' => '',
'pConnect' => false,
'DBDebug' => true,
'charset' => 'utf8',
'DBCollat' => 'utf8_general_ci',
'swapPre' => '',
'encrypt' => false,
'compress' => false,
'strictOn' => false,
'failover' => [],
'port' => 3306,
];
// ...
}
El nombre de la propiedad de clase es el nombre de la conexión y se puede utilizar mientras se conecta para especificar un nombre de grupo.
Nota
The default location of the SQLite3 database is in the writable folder. Si desea cambiar la ubicación, debe establecer la ruta completa a la nueva carpeta.
DSN
Algunos controladores de bases de datos (como Postgre, OCI8) requieren una cadena DSN completa para conectarse. Pero si no especifica una cadena DSN para un controlador que la requiere, Higgs Intentaremos construirlo con el resto de las configuraciones proporcionadas.
Si especifica un DSN, debe usar la opción de configuración 'DSN'
, como si
estás usando la extensión PHP nativa subyacente del controlador, como esta:
// OCI8
public array $default = [
'DSN' => '//localhost/XE',
// ...
];
DSN de manera universal
También puede establecer un nombre de fuente de datos de manera universal (como una URL). En ese caso los DSN deben tener este prototipo:
public array $default = [
'DSN' => 'DBDriver://username:password@hostname:port/database',
// ...
];
Para anular los valores de configuración predeterminados al conectarse con una versión universal de la cadena DSN, agregue las variables de configuración como una cadena de consulta:
// MySQLi
public array $default = [
'DSN' => 'MySQLi://username:password@hostname:3306/database?charset=utf8&DBCollat=utf8_general_ci',
// ...
];
// Postgre
public array $default = [
'DSN' => 'Postgre://username:password@hostname:5432/database?charset=utf8&connect_timeout=5&sslmode=1',
// ...
];
Nota
If you provide a DSN string and it is missing some valid settings (e.g., the conjunto de caracteres de la base de datos), que están presentes en el resto de la configuración campos, Higgs los agregará.
Conmutaciones por error
También puede especificar conmutación por error para la situación en la que la conexión principal no puede conectarse por algún motivo. Estas conmutaciones por error se pueden especificar configurando la conmutación por error para una conexión como esta:
<?php
namespace Config;
use Higgs\Database\Config;
class Database extends Config
{
// ...
public array $default = [
// ...
'failover' => [
[
'hostname' => 'localhost1',
'username' => '',
'password' => '',
'database' => '',
'DBDriver' => 'MySQLi',
'DBPrefix' => '',
'pConnect' => true,
'DBDebug' => true,
'charset' => 'utf8',
'DBCollat' => 'utf8_general_ci',
'swapPre' => '',
'encrypt' => false,
'compress' => false,
'strictOn' => false,
],
[
'hostname' => 'localhost2',
'username' => '',
'password' => '',
'database' => '',
'DBDriver' => 'MySQLi',
'DBPrefix' => '',
'pConnect' => true,
'DBDebug' => true,
'charset' => 'utf8',
'DBCollat' => 'utf8_general_ci',
'swapPre' => '',
'encrypt' => false,
'compress' => false,
'strictOn' => false,
],
],
// ...
];
// ...
}
Puede especificar tantas conmutaciones por error como desee.
Configuración de múltiples bases de datos
Opcionalmente, puede almacenar varios conjuntos de conexiones. valores. Si, por ejemplo, ejecuta varios entornos (desarrollo, producción, prueba, etc.) bajo una sola instalación, puede configurar un grupo de conexión para cada uno, luego cambie entre grupos según sea necesario. Para Por ejemplo, para configurar un entorno de «prueba», haría esto:
<?php
namespace Config;
use Higgs\Database\Config;
class Database extends Config
{
// ...
public array $test = [
'DSN' => '',
'hostname' => 'localhost',
'username' => 'root',
'password' => '',
'database' => 'database_name',
'DBDriver' => 'MySQLi',
'DBPrefix' => '',
'pConnect' => true,
'DBDebug' => true,
'charset' => 'utf8',
'DBCollat' => 'utf8_general_ci',
'swapPre' => '',
'compress' => false,
'encrypt' => false,
'strictOn' => false,
'failover' => [],
];
// ...
}
Luego, para decirle globalmente al sistema que use ese grupo, configuraría esto variable ubicada en el archivo de configuración:
<?php
namespace Config;
use Higgs\Database\Config;
class Database extends Config
{
// ...
public string $defaultGroup = 'test';
// ...
}
Nota
The name test
is arbitrary. It can be anything you want. By
Por defecto hemos usado la palabra predeterminado
para la conexión principal,
pero también se le puede cambiar el nombre a algo más relevante para su proyecto.
Cambiar bases de datos automáticamente
Puede modificar el archivo de configuración para detectar el entorno y automáticamente
actualice el valor defaultGroup
al correcto agregando la lógica requerida
dentro del constructor de la clase:
<?php
namespace Config;
use Higgs\Database\Config;
/**
* Database Configuration
*/
class Database extends Config
{
// ...
public $development = [/* ... */];
public $test = [/* ... */];
public $production = [/* ... */];
public function __construct()
{
// ...
$this->defaultGroup = ENVIRONMENT;
}
}
Configurando con el archivo .env
También puede guardar sus valores de configuración dentro de un archivo .env con el servidor actual.
configuración de la base de datos. Sólo necesita ingresar los valores que cambian de lo que está en el
ajustes de configuración predeterminados del grupo. Los valores deben ser nombre siguiendo este formato, donde
predeterminado
es el nombre del grupo:
base de datos.default.nombre de usuario = 'raíz';
base de datos.default.contraseña = '';
base de datos.default.database = 'H4';
Pero no puede agregar una nueva propiedad estableciendo variables de entorno, ni cambiar una valor escalar a una matriz. Consulte Variables de Entorno como Reemplazos para Datos para obtener más detalles.
Entonces, si quieres usar SSL con MySQL, necesitas un truco. Por ejemplo, establezca la matriz valores como una cadena JSON en su archivo .env:
base de datos.default.encrypt = {"ssl_verify":true,"ssl_ca":"/var/www/html/BaltimoreCyberTrustRoot.crt.pem"}
y decodificarlo en el constructor de la clase Config:
<?php
namespace Config;
use Higgs\Database\Config;
/**
* Database Configuration
*/
class Database extends Config
{
// ...
public function __construct()
{
// ...
$array = json_decode($this->default['encrypt'], true);
if (is_array($array)) {
$this->default['encrypt'] = $array;
}
}
}
Explicación de Valores:
Nota
Depending on what database driver you are using (MySQLi
, Postgre
,
etc.) no se necesitarán todos los valores. Por ejemplo, al utilizar SQLite3
No será necesario proporcionar un nombre de usuario o contraseña, y el nombre de la base de datos.
será la ruta a su archivo de base de datos.