CREATE TABLE fairies (
      id INTEGER PRIMARY KEY,
      name VARCHAR(255)
    )
');
//Create wrapper classes
class FairyEntity extends \PHPixie\ORM\Wrappers\Type\Database\Entity
{
    public function greet()
    {
        return "Hello, my name is {$this->name}";
    }
}
//Create wrapper builder
class Wrappers extends \PHPixie\ORM\Wrappers\Implementation
{
    //Tell which models have wrapped entities
    public function databaseEntities()
    {
        return array('fairy');
    }
    public function fairyEntity($entity)
    {
        return new FairyEntity($entity);
    }
}
//Set up ORM
$orm = new \PHPixie\ORM($database, $slice->arrayData(array()), new Wrappers());
$trixie = $orm->repository('fairy')->create();
$trixie->name = 'Trixie';
echo $trixie->greet() . "\n";
<?php

require_once 'vendor/autoload.php';
$slice = new \PHPixie\Slice();
$database = new \PHPixie\Database($slice->arrayData(array('default' => array('driver' => 'pdo', 'connection' => 'sqlite::memory:'))));
$orm = new \PHPixie\ORM($database, $slice->arrayData(array('relationships' => array(array('type' => 'oneToMany', 'owner' => 'fairy', 'items' => 'flower')))));
//Create tables
$connection = $database->get('default');
$connection->execute('
    CREATE TABLE fairies (
      id INTEGER PRIMARY KEY,
      name VARCHAR(255)
    )
');
$connection->execute('
    CREATE TABLE flowers (
      id INTEGER PRIMARY KEY,
      name VARCHAR(255),
      fairyId INTEGER
    )
');
//There are no Model classes anymore
//They have been split into Repositories, Entities and Queries
//This helps to avoid confusion, reach better separation of concerns and ponies and kittens
/*
We all hated when someone was using entities as queries:
$fairy->name = 'Trixie';
$fairy->save();
$fairy->where('name', 'Stella')->find();
*/
$fairyRepository = $orm->repository('fairy');