cycle/schema-builder

Cycle ORM Schema Builder

Maintainers

👁 wolfy-j

Package info

github.com/cycle/schema-builder

pkg:composer/cycle/schema-builder

Fund package maintenance!

cycle

Statistics

Installs: 828 405

Dependents: 25

Suggesters: 3

Stars: 15

Open Issues: 10

v2.12.0 2026-06-15 17:35 UTC

Requires

Requires (Dev)

Suggests

None

Provides

None

Conflicts

None

Replaces

None

MIT cde7e2a3e6fa6818f5381f4ff83cc611325deb17

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

README

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

Schema Builder package provides a convenient way to configure your ORM and Database schema via annotations (attributes) or custom generators.

Installation

composer require cycle/schema-builder

Configuration

use Cycle\Migrations;
use Cycle\Database;
use Cycle\Database\Config;

$dbal = new Database\DatabaseManager(new Config\DatabaseConfig([
 'default' => 'default',
 'databases' => [
 'default' => [
 'connection' => 'sqlite'
 ]
 ],
 'connections' => [
 'sqlite' => new Config\SQLiteDriverConfig(
 connection: new Config\SQLite\MemoryConnectionConfig(),
 queryCache: true,
 ),
 ]
]));

$registry = new \Cycle\Schema\Registry($dbal);

We can now register our first entity, add its columns and link to a specific table:

use Cycle\Schema\Definition;

$entity = new Definition\Entity();

$entity
 ->setRole('user')
 ->setClass(User::class);

// add fields
$entity->getFields()
 ->set('id', (new Definition\Field())->setType('primary')->setColumn('id')->setPrimary(true))
 ->set('name', (new Definition\Field())->setType('string(32)')->setColumn('user_name'));

// register entity
$r->register($entity);

// associate table
$r->linkTable($entity, 'default', 'users');

You can generate ORM schema immediately using Cycle\Schema\Compiler:

use Cycle\Schema\Compiler;
$schema = (new Compiler())->compile($r);

$orm = $orm->with(schema: new \Cycle\ORM\Schema($schema));

You can find more information about Schema builder package here.

License:

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