Milk Admin
Multi-Database Support
The MilkCore framework supports multiple database connections to MySQL and SQLite through a unified interface with automatic query conversion.
By default, the framework is configured to use two databases (db and db2) during installation. You can add unlimited additional connections via configuration or at runtime.
DatabaseManager - API Reference
| Method | Description |
|---|---|
connection(?string $name = null) |
Get a database connection (default: 'db') |
addConnection(string $name, array $config, bool $replace = false) |
Add a connection at runtime |
getAvailableConnections() |
List all available connections |
hasConnection(string $name) |
Check if a connection exists |
getConnectionConfig(string $name) |
Get connection configuration |
disconnect(string $name) |
Disconnect a specific connection |
reconnect(string $name) |
Reconnect a connection |
removeConnection(string $name) |
Remove a connection entirely |
Basic Usage
use App\DatabaseManager;
// Default connection
$db = DatabaseManager::connection();
// Named connections
$analytics = DatabaseManager::connection('analytics');
$logging = DatabaseManager::connection('logging');
Configuration
Numbered Connections (db, db2, db3, ...)
// config.php
// Primary connection (db)
Config::set('db_type', 'mysql');
Config::set('connect_ip', 'localhost');
Config::set('connect_login', 'root');
Config::set('connect_pass', 'password');
Config::set('connect_dbname', 'main_db');
Config::set('prefix', 'app_');
// Secondary connection (db2)
Config::set('db_type2', 'mysql');
Config::set('connect_ip2', '192.168.1.100');
Config::set('connect_login2', 'analytics_user');
Config::set('connect_pass2', 'secret');
Config::set('connect_dbname2', 'analytics');
Config::set('prefix2', 'analytics_');
// Third connection (db3) - SQLite
Config::set('db_type3', 'sqlite');
Config::set('connect_dbname3', '/var/db/cache.db');
Config::set('prefix3', 'cache_');
Named Connections
// config.php
Config::set('db_connections', [
'analytics' => [
'type' => 'mysql',
'host' => 'analytics.db.example.com',
'username' => 'analytics_ro',
'password' => 'readonly123',
'database' => 'analytics_db',
'prefix' => 'an_'
],
'logs' => [
'type' => 'sqlite',
'database' => '/var/log/app.db',
'prefix' => 'log_'
]
]);
Runtime Registration
DatabaseManager::addConnection('external_api', [
'type' => 'mysql',
'host' => 'api.external.com',
'username' => 'api_user',
'password' => 'api_pass',
'database' => 'api_data',
'prefix' => 'ext_'
]);
$external = DatabaseManager::connection('external_api');
$data = $external->getResults("SELECT * FROM api_table");
Access via Get Class
Database connections can also be obtained through the Get class:
// Primary connection
$db = Get::db();
// Secondary connection
$db2 = Get::db2();
// Any named connection
$analytics = Get::dbConnection('analytics');
$logs = Get::dbConnection('logs');
Loading...