Skip to content
This repository has been archived by the owner on Jan 24, 2024. It is now read-only.

Commit

Permalink
Update README.md
Browse files Browse the repository at this point in the history
  • Loading branch information
wolfy-j authored Jul 30, 2017
1 parent d2b929e commit 6396d24
Showing 1 changed file with 76 additions and 1 deletion.
77 changes: 76 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,79 @@ Spiral ORM
[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/spiral/orm/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/spiral/orm/?branch=master)
[![Coverage Status](https://coveralls.io/repos/github/spiral/orm/badge.svg?branch=master)](https://coveralls.io/github/spiral/orm?branch=master)

<b>[Documentation](http://spiral-framework.com/guide)</b> | [CHANGELOG](/CHANGELOG.md)
<b>[Documentation](http://spiral-framework.com/guide)</b> | [CHANGELOG](/CHANGELOG.md)


```php
class Post extends RecordEntity
{
use TimestampsTrait;

//Database partitions, isolation and aliasing
const DATABASE = 'blog';

const SCHEMA = [
'id' => 'bigPrimary',
'title' => 'string(64)',
'status' => 'enum(published,draft)',
'body' => 'text',

//Simple relation definitions
'comments' => [self::HAS_MANY => Comment::class],

//Not very simple relation definitions
'collaborators' => [
self::MANY_TO_MANY => User::class,
self::PIVOT_TABLE => 'post_collaborators_map',
self::PIVOT_COLUMNS => [
'time_assigned' => 'datetime',
'type' => 'string, nullable',
],
User::INVERSE => 'collaborated_posts'
],

//Pre-compiled relations
'author' => [
self::BELONGS_TO => AuthorInterface::class,
self::LATE_BINDING => true
],

//Hybrid databases
'metadata' => [
Document::ONE => Mongo\Metadata::class
]
];
}
```

```php
$posts = $postSource->find()->distinct()
->with('comments', ['where' => ['{@}.approved' => true]]) //Automatic joins
->with('author')->where('author_name', 'LIKE', $authorName) //Fluent
->load('comments.author') //Cascade eager-loading (joins or external query)
->paginate(10) //Quick pagination using active request
->getIterator();

foreach ($posts as $post) {
echo $post->author->getName();
}
```

```php
$post = new Post();
$post->publish_at = 'tomorrow 8am';
$post->author = new User(['name' => 'Antony']);

$post->tags->link(new Tag(['name' => 'tag A']));
$post->tags->link($tags->findOne(['name' => 'tag B']));

$transaction = new Transaction();
$transaction->store($post);
$transaction->run();

//--or--: Active record (optional)
$post->save();

//--or--: request specific transaction
$this->transaction->store($post);
```

0 comments on commit 6396d24

Please sign in to comment.