Skip to content

siriusphp/orm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

60 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Source Code Latest Version Software License Build Status Coverage Status Quality Score

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

  1. Mapping rows to your own entities
  2. Relations and relation aggregates (COUNT/AVERAGE)
  3. Eager-loading & lazy-loading (without increasing the number of queries)
  4. Queries that let you JOIN with relations (not tables)
  5. Deep persistence
  6. Dynamically defined mappers
  7. Speed & low memory usage (no Entity Manager)
  8. 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);

Links

About

Datamapper for PHP build for performance and DX

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages