Database Module

Overview

The ForgeDatabase module provides direct, low-level database access while maintaining compatibility with multiple database systems. This module serves as the foundation for higher-level ORM modules like ForgeOrm and ForgeExplicitOrm.

Configuration

Configure your database connections in config/forge_database.php:

return [
    'default' => env('DB_CONNECTION', 'mysql'),
    
    'connections' => [
        'mysql' => [
            'driver' => 'mysql',
            'host' => env('DB_HOST', '127.0.0.1'),
            'port' => env('DB_PORT', 3306),
            'database' => env('DB_DATABASE', 'forge'),
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            'charset' => 'utf8mb4',
            'collation' => 'utf8mb4_unicode_ci',
        ],
    ],
];

Connection Setup

Get a database connection instance:

use Forge\Database\DatabaseManager;

// Get default connection
$db = DatabaseManager::connection();

// Get specific connection
$pgsql = DatabaseManager::connection('pgsql');

Query Execution

Execute raw SQL queries with parameter binding:

// Select query
$users = $db->query("SELECT * FROM users WHERE active = ?", [1]);

// Insert query
$db->execute("INSERT INTO logs (message) VALUES (?)", ['System started']);

// Transaction example
try {
    $db->beginTransaction();
    $db->execute("UPDATE accounts SET balance = balance - ?", [100]);
    $db->execute("UPDATE accounts SET balance = balance + ?", [100]);
    $db->commit();
} catch (\Exception $e) {
    $db->rollBack();
    throw $e;
}

Database Adapters

ForgeDatabase supports multiple database drivers:

// MySQL
$mysql = new Forge\Database\Adapters\MySQLAdapter($config);

// PostgreSQL
$pgsql = new Forge\Database\Adapters\PostgresAdapter($config);

// SQLite
$sqlite = new Forge\Database\Adapters\SQLiteAdapter($config);