The only PHP & MySQL ORM for Continuous Delivery. Using javanile/moldable can eliminate the step of data migrations and schema changes, often manual steps or exceptions to a continuous delivery workflow.
Moldable is an abstraction layer to manage MySQL database
with improved function to alter-state and manipulate database schema.
Moldable integrates a ORM class for manage persistent objects and adapt database schema
We are looking for contributors (PHP lovers) that are passioned by ORM and Database worlds for:
We guarantee all visibility and thanks for our contributors, many many stars and public reference in all blog posts and articles that talk about javanile/moldable
We recommend installing via composer, to install otherwise you will write a issue.
composer require javanile/moldable
<?php
// library namespace
use Javanile\Moldable\Database;
// initialize a database connection object
$db = new Database([
'host' => 'localhost',
'dbname' => 'db_marketing',
'username' => 'root',
'password' => 'p4ssw0rd',
'prefix' => 'prefix_',
]);
// '$db' is ready to use for your manipulation
<?php
// library namespace
use Javanile\Moldable\Storable;
// define ORM class-model
class Customer extends Storable
{
public $id = self::PRIMARY_KEY;
public $name = '';
}
// instance empty object
// database tables and fields are automatic generated
// or updated if change Customer class
$customer = new Customer();
// assign values
$customer->name = 'Franky Franco';
// now object persist on DB
$customer->store();
<?php
// '$db' is pre-connected database object (follow: 'How to: Connect to database')
// apply method send queries to create
// or align database to defined schema
$db->apply([
// customer table name
'Customer' => [
// customer fields
'id' => $db::PRIMARY_KEY, // define field as a primary key
'name' => '', // empty string define field as VARCHAR
'points' => 0, // 0 (zero) define field as INT(11)
'born' => $db::DATE, // use to define as date field
'bio' => $db::TEXT, // text for large string and contents
],
// products table name
'Products' => [
// products fields
'id' => $db::PRIMARY_KEY, // define field as a primary key
'name' => '', // empty string define field as VARCHAR
'price' => .0, // for float number init field with point-zero ".0"
],
]);
To test the library, follow these steps:
phpunit.xml.dist
to phpunit.xml
phpunit.xml
with database connection paramiters./vendor/bin/phpunit
from project directory