NAME

ObjectDB::Cookbook - Cooking with ObjectDB

RECIPIES

Single object manipulations

Create

# Create new article with title 'foo'
my $article = Article->new(title => 'foo');
$article->create;

Update

# Update loaded article
$article->column(title => 'bar');
$article->update;

Delete

# Delete loaded article
$article->delete;

Load

# Load article providing a primary key 'id'
my $article = Article->new(id => 1);
$article->load;

Multiple objects manipulations

Find

# Find articles with title 'foo'
my $articles = Article->find(where => [title => 'foo']);

# Find article with title 'foo'
my $articles = Article->find(where => [title => 'foo'], single => 1);

# Find articles using paging
my $articles = Article->find(page => 1, page_size => 10);

Update

# Update articles titles to 'bar' where titles are 'foo'
Author->update(set => {title => 'bar'}, where => [title => 'foo']);

Delete

# Delete all articles
Article->delete;

# Delete articles where title is 'foo'
Article->delete(where => [title => 'foo']);

Count

# Count all articles
my $total = Article->count;

# Count articles where title is 'foo'
my $total_with_title_foo = Article->count(where => [title => 'foo']);

Relationships

Manipulations on related objects

$article->find_related('comments', where => [author => 'foo']);
$article->delete_related('comments', where => [author => 'foo']);
$article->count_related('comments', where => [author => 'foo']);
$article->update_related(
    'comments',
    set   => {author => 'bar'},
    where => [author => 'foo']
);
$article->set_related('tags' => {name => 'foo'});

Preloading related objects

my $article = Article->find(with => 'tags');

Preloading related objects on demand

my $tags = $article->load_related('tags');

Accessing preloaded related objects

my $tags = $article->related('tags');

Deep nested relationships

# Find author whose articles are in 'foo' category
my $authors = Author->find(where => ['articles.category.title' => 'foo']);

Real world examples

AUTHOR

Viacheslav Tykhanovskyi, vti@cpan.org.

COPYRIGHT

Copyright (C) 2009, Viacheslav Tykhanovskyi.

This program is free software, you can redistribute it and/or modify it under the same terms as Perl 5.10.