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);