Skip to content

cycle/schema-builder

Repository files navigation

Cycle ORM - Schema Builder

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.

About

Declarative schema generation for Cycle ORM

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks

Sponsor this project

 

Packages

No packages published

Contributors 15