2017 © Pedro Peláez
 

library schnoop-schema

Schnoop Schema is a collection of PHP classes for describing a MySQL database schema.

image

milesasylum/schnoop-schema

Schnoop Schema is a collection of PHP classes for describing a MySQL database schema.

  • Monday, January 15, 2018
  • by courtney-miles
  • Repository
  • 1 Watchers
  • 0 Stars
  • 4,440 Installations
  • PHP
  • 1 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 5 Versions
  • 26 % Grown

The README.md

schnoop-schema

Tests Coverage Status Latest Stable Version Total Downloads License, (*1)

Schnoop Schema is a collection of PHP classes for describing a MySQL database schema and providing the DDL statements for that schema., (*2)

Its intended purpose is to be a code-generator, by making it easy to use PHP to script to creation of DDL statements for tables, routines, etc., (*3)

This package does not interact with a database server, but for an implementation that does, checkout milesasylum/Schnoop., (*4)

With Schnoop-Scheme you can describe the following database definitions:, (*5)

  • Databases
  • Tables
    • Columns
    • Indexes
    • Foreign keys
    • Triggers
  • Functions
  • Procedures

Disclaimer: It is not advisable to use this package in production environment -- it's is suitable only for development environments to assist with code generation., (*6)

Examples

Create database

<?php

use MilesAsylum\SchnoopSchema\MySQL\Database\Database;

$database = new Database('schnoop_db');
$database->setDefaultCollation('utf8mb4_general_ci');
$database->setDelimiter('$$');
$database->setDropPolicy(Database::DDL_DROP_POLICY_DROP_IF_EXISTS);
echo $database->getCreateStatement();
/*
DROP DATABASE IF EXISTS `schnoop_db`$$
CREATE DATABASE `schnoop_db` DEFAULT COLLATION 'utf8mb4_general_ci'$$
*/

Create table

<?php

use MilesAsylum\SchnoopSchema\MySQL\Table\Table;

// Create Table.
$table = new Table('schnoop_tbl');
$table->setEngine(Table::ENGINE_INNODB);
$table->setDefaultCollation('utf8mb4_general_ci');

Add columns to the table

<?php

// ...
use MilesAsylum\SchnoopSchema\MySQL\Column\Column;
use MilesAsylum\SchnoopSchema\MySQL\DataType\IntType;
use MilesAsylum\SchnoopSchema\MySQL\DataType\VarCharType;
use MilesAsylum\SchnoopSchema\MySQL\DataType\TimestampType;

// ...

// Add an ID column.
$idType = new IntType();
$idType->setSigned(false);
$idColumn = new Column('id', $idType);
$idColumn->setAutoIncrement(true);
$idColumn->setNullable(false);
$table->addColumn($idColumn);

// Add a name column.
$nameType = new VarCharType(50);
$nameType->setCollation('ascii_general_ci');
$nameColumn = new Column('name', $nameType);
$table->addColumn($nameColumn);

// Add an updated-at column.
$updatedAtType = new TimestampType();
$updatedAtType->setPrecision(2);
$updatedAtColumn = new Column('updated_at', $updatedAtType);
$updatedAtColumn->setOnUpdateCurrentTimestamp(true);
$updatedAtColumn->setNullable(false);
$table->addColumn($updatedAtColumn);

Add indexes to the table

<?php

// ...
use MilesAsylum\SchnoopSchema\MySQL\Constraint\PrimaryKey;
use MilesAsylum\SchnoopSchema\MySQL\Constraint\Index;
use MilesAsylum\SchnoopSchema\MySQL\Constraint\IndexedColumn;

// ...

// Add a primary key
$pkIndex = new PrimaryKey();
$pkIndex->addIndexedColumn(
    new IndexedColumn($idColumn->getName())
);
$table->addIndex($pkIndex);

// Add an index on the first 8 characters of the name column.
$nameIndexedColumn = new IndexedColumn($nameColumn->getName());
$nameIndexedColumn->setLength(8);
$nameIndex = new Index('name_idx');
$nameIndex->addIndexedColumn($nameIndexedColumn);
$table->addIndex($nameIndex);

TODO

  • Add support for Views.

The Versions

15/01 2018

dev-master

9999999-dev https://github.com/courtney-miles/schnoop-schema

Schnoop Schema is a collection of PHP classes for describing a MySQL database schema.

  Sources   Download

MIT

The Requires

  • php 5.6 - 7.2

 

The Development Requires

by Courtney Miles

database sql mysql ddl

15/01 2018

v0.2.0

0.2.0.0 https://github.com/courtney-miles/schnoop-schema

Schnoop Schema is a collection of PHP classes for describing a MySQL database schema.

  Sources   Download

MIT

The Requires

  • php 5.6 - 7.2

 

The Development Requires

by Courtney Miles

database sql mysql ddl

15/01 2018

dev-imprv/1/Php7Compatibility

dev-imprv/1/Php7Compatibility https://github.com/courtney-miles/schnoop-schema

Schnoop Schema is a collection of PHP classes for describing a MySQL database schema.

  Sources   Download

MIT

The Requires

  • php 5.6 - 7.2

 

The Development Requires

by Courtney Miles

database sql mysql ddl

20/10 2016

v0.1.1

0.1.1.0 https://github.com/courtney-miles/schnoop-schema

Schnoop Schema is a collection of PHP classes for describing a MySQL database schema.

  Sources   Download

MIT

The Requires

  • php ~5.6.0

 

The Development Requires

by Courtney Miles

database sql mysql ddl

13/10 2016

0.1.0

0.1.0.0 https://github.com/courtney-miles/schnoop-schema

Schnoop Schema is a collection of PHP classes for describing a MySQL database schema.

  Sources   Download

MIT

The Requires

  • php ~5.6.0

 

The Development Requires

by Courtney Miles

database sql mysql ddl