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