cycle/database

DBAL, schema introspection, migration and pagination

Maintainers

👁 wolfy-j

Package info

github.com/cycle/database

Homepage

Chat

Documentation

pkg:composer/cycle/database

Fund package maintenance!

cycle

Statistics

Installs: 774 699

Dependents: 50

Suggesters: 0

Stars: 70

Open Issues: 29

2.21.0 2026-06-24 09:51 UTC

Requires

Requires (Dev)

Suggests

None

Provides

None

Conflicts

Replaces

None

MIT 14c2bc280aa0973a9339866b21d8c03931a5c18e

  • Anton Titov (wolfy-j) <wolfy-j.woop@spiralscout.com>
  • Aleksei Gagarin (roxblnfk) <alexey.gagarin.woop@spiralscout.com>
  • Maksim Smakouz (msmakouz) <maksim.smakouz.woop@spiralscout.com>
  • Pavel Butchnev (butschster) <pavel.buchnev.woop@spiralscout.com>

databaseormdbalsqlmysqlsqlitepostgresqlmssqlquery-builder

This package is auto-updated.

Last update: 2026-06-24 09:51:48 UTC


README

👁 Latest Stable Version
👁 Build Status
👁 Scrutinizer Code Quality
👁 Codecov

Secure, multiple SQL dialects (MySQL, PostgreSQL, SQLite, SQLServer), schema introspection, schema declaration, smart identifier wrappers, database partitions, query builders, nested queries.

Documentation

Requirements

Make sure that your server is configured with following PHP version and extensions:

  • PHP 8.0+
  • PDO Extension with desired database drivers

Installation

To install the component:

composer require cycle/database

Example

Given example demonstrates the connection to SQLite database, creation of table schema, data insertion and selection:

<?php
declare(strict_types=1);

require_once "vendor/autoload.php";

use Cycle\Database\Config;
use Cycle\Database\DatabaseManager;

$dbm = new DatabaseManager(new Config\DatabaseConfig([
 'databases' => [
 'default' => ['connection' => 'sqlite'],
 ],
 'connections' => [
 'sqlite' => new Config\SQLiteDriverConfig(
 connection: new Config\SQLite\FileConnectionConfig(
 database: 'runtime/database.db'
 ),
 ),
 ],
]));

$users = $dbm->database('default')->table('users');

// create or update table schema
$schema = $users->getSchema();
$schema->primary('id');
$schema->string('name');
$schema->datetime('created_at');
$schema->datetime('updated_at');
$schema->save();

// insert data
$users->insertOne([
 'name' => 'test',
 'created_at' => new DateTimeImmutable(),
 'updated_at' => new DateTimeImmutable(), 
]);

// select data
foreach ($users->select()->where(['name' => 'test']) as $u) {
 print_r($u);
}

License:

MIT License (MIT). Please see LICENSE for more information. Maintained by Spiral Scout.