laminas/laminas-db
Database abstraction and SQL builder for PHP. Provides adapters, connection management, query/statement execution, metadata and schema tools, result sets, and a fluent API for composing SQL across multiple database platforms.
Pros:
Select, Insert, Update) similar to Eloquent but with lower-level control.Cons:
Laminas\Db\Adapter\Adapter configuration).pdo_mysql) but requires explicit adapter configuration.AppServiceProvider or a dedicated provider, though no built-in integration exists.where(), order(), limit()), easing adoption for developers familiar with Eloquent.Laminas\Db\Sql syntax (e.g., Select::from('users')->where(...) vs. User::where(...)).Laminas\Db adapters may require custom test doubles.laminas-db over Laravel’s native Query Builder/PDO? (e.g., "We need Oracle support with a consistent API.")laminas-db lacks compatibility?laminas-db vs. Eloquent/Query Builder for critical queries?doctrine/dbal or raw PDO meet the same needs with lower risk?spatie/laravel-query-builder) that offers similar abstraction with active maintenance?pdo_mysql, pgsql) but requires explicit adapter configuration.DatabaseConnectionInterface).laminas-db for real-time data.ReportService with Laminas\Db\Sql\Select.config/app.php or a service provider:
$container->singleton('Laminas\Db\Adapter\AdapterInterface', function ($container) {
return new \Laminas\Db\Adapter\Adapter([
'driver' => 'Pdo\Mysql',
'database' => env('DB_DATABASE'),
'username' => env('DB_USERNAME'),
'password' => env('DB_PASSWORD'),
'hostname' => env('DB_HOST'),
]);
});
Laminas\Db equivalents:
// Before (Eloquent)
$users = User::where('active', 1)->orderBy('name')->get();
// After (Laminas\Db)
$select = new \Laminas\Db\Sql\Select();
$select->from('users')
->where->equalTo('active', 1)
->orderBy('name');
$result = $adapter->query($select)->toArray();
Laminas\Db adapters.laminas-db has its own event system (e.g., TableGatewayEvent), which may need mapping to Laravel’s event system.spatie/laravel-permission) will remain unaffected.laravel-excel for Oracle) may need adjustments.laminas/laminas-db to composer.json.Laminas\Db usage (e.g., Db::select()).laminas-db SQL.laminas-db) for the team.laminas-db.config/laminas-db.php).laminas-db patterns.laminas-db logging orHow can I help you explore Laravel packages today?