respect/data

Persistence simplified

0.2.2 2015-01-05 16:03 UTC

This package is auto-updated.

Last update: 2024-10-24 04:28:44 UTC


README

Build Status Latest Version Total Downloads License

Respect\Data allows you to use multiple, cooperative database mapping with a single solid API. You can even mix out MySQL and MongoDB databases in a single model.

This project is a work in progress

Installation

The package is available on Packagist. You can install it using Composer.

composer require respect/data

PSR-0 and PSR-2 compatible.

Collections

The main component for Respect\Data are Collections. They define how data is grouped in your application.

In the example below, we're declaring two collections for dealing with a news portal:

$articles = Collection::article();
$authors = Collection::article()->author();

Backends

Currently, Respect\Data has two planned backend implementations: Respect\Relational for relational databases like MySQL and SQLite and Respect\Structural for MongoDB databases. These are different mappers that use the Respect\Data model.

Below is a sample of how to retrieve all authors from the author 5:

$mapper->article->author[5]->fetchAll();
  • On the Relational backend, Respect would automatically build a query similar to SELECT * FROM article INNER JOIN author ON article.author_id = author.id WHERE author.id = 5.
  • On the Structural backend for MongoDB, the generated internal query would be something like db.article.find({"author.id":5}, {"author":1});.

Features

Besides fetching data from databases, Respect\Data is expected to deal with several other scenarios:

  • Persisting data into collections
  • Using backend-native extra commands in queries
  • Declaring shortcuts for large collection declarations
  • Handling composite mapper backends

License

See LICENSE file.