Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
7. Creating new data mapper & working with Entity Manager
- we recommend you to get familiar with the Data-Mapper Pattern and PHP's PDO extension. You can read more here: https://github.com/gjerokrsteski/php-identity-map
- otherwise you have to go to "app/MyFirstBlog/" and create a two new subdirectories "DataMapper" and "Model" - the directories names are strict convention.
- create new model class into directory "app/MyFirstBlog/Model/" for example with name "Entry.php" and class name "MyFirstBlog\Model\Entry"
- create new data-mapper class into directory "app/MyFirstBlog/DataMapper/" for example with name "Entry.php" with class name "MyFirstBlog\DataMapper\Entry" by extending the class "Pimf\DataMapper\Base"
- create the CRUD methods you really need at the class "MyFirstBlog\DataMapper\Entry". For better understanding how to use PDO and how to hydrate objects, read more here: https://github.com/gjerokrsteski/pimf-blog/blob/master/app/MyFirstBlog/DataMapper/Entry.php
|-- app/ | `-- MyFirstBlog/ | |-- Controller/ | | '-- Blog.php | |-- DataMapper/ | | '-- Entry.php | |-- Model/ | | '-- Entry.php
Using the Entity Manager
PIMF gives you an Pimf\EntityManager class, based on PDO which is a general manager for data persistence and object relational mapping. All the data-mappers who live at the 'app/MyFirstBlog/DataMapper/' directory will be loaded by the Pimf\EntityManager only once for the whole request process.
Access the entity manager from the registry and find an blog-entry
$em = Pimf\Registry::get('em'); $entry = $em->entry->find(178);
Inserting a blog-article
$entry = new MyFirstBlog\Model\Entry(); $entry->setTitle($title); $entry->setContent($content); $res = Pimf\Registry::get('em')->entry->insert($entry);
Updating a blog-article
$em = Pimf\Registry::get('em'); $entry = new MyFirstBlog\Model\Entry(); $entry->setTitle($title); $entry->setContent($content); $entry = $em->entry->reflect($entry, 178); $res = $em->entry->update($entry);
Deleting a blog-article
$res = Pimf\Registry::get('em')->entry->delete(178);