Sirius ORM

Sirius ORM is a fast and lightweight yet flexible data mapper solution developed with DX in mind. It offers:

Mapping rows to your own entities Relations and relation aggregates (COUNT/AVERAGE) Eager-loading & lazy-loading (without increasing the number of queries) Queries that let you JOIN with relations (not tables Deep persistence Dynamically defined mappers Speed & low memory usage (no Entity Manager) 90+% code coverage

Installation

composer require siriusphp/orm

Initialization

use Sirius\Orm\Orm; use Sirius\Orm\ConnectionLocator; $connectionLocator = ConnectionLocator::new( 'mysql:host=localhost;dbname=testdb', 'username', 'password' ); $orm = new Orm($connectionLocator);

Configuration

AKA, registering mappers and relations

$orm->register('pages', MapperConfig::fromArray([ /** * here goes the configuration */ ])); // continue with the rest of mappers

Usage

// find by ID $page = $orm->find('pages', 1); // or via the mapper $page = $orm->get('pages')->find(1); // query $pages = $orm->select('pages') ->where('status', 'published') ->orderBy('date desc') ->limit(10) ->get(); // manipulate $page->title = 'Best ORM evah!'; $page->featured_image->path = 'orm_schema.png'; // persist $orm->save($page); // or via the mapper $orm->get('pages')->save($page);

Next: mappers