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";
    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');
$flowerRepository = $orm->repository('flower');
//Here goes
///Create some fairies
$trixie = $fairyRepository->create();
$trixie->name = 'Trixie';
$trixie->save();
////Shorter version
$fairyRepository->create(array('name' => 'Stella'))->save();
///Create flowers
foreach (array('Red', 'Yellow', 'Green', 'Purple') as $name) {
    $flowerRepository->create(array('name' => $name))->save();
}
//Query
$green = $flowerRepository->query()->where('id', '>', 1)->startAndWhereGroup()->where('name', 'Green')->or('name', 'Red')->endGroup()->findOne();
//Relationships