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...