NAME
Model - the simplest ORM implementation for Perl
DESCRIPTION
ORM implementation with full SQL syntax support.
Contain only methods needed for CRUD.
No JOIN or UNION implementation inside.
Mostly old scool Perl coding style using.
DB TABLES SAMPLE
+---------------+ |feed | +---------------+ |id | |name | |is_public | |updated | |created | +---------------+
feed (ONE) to feed_file (MANY)
+---------------+ |feed_file | +---------------+ |id | |feed_id | |name | |is_public | |size | |for_date | |updated | |created | +---------------+
MODEL SAMPLE
feed model
package Model::Feed; use Model; our @ISA = qw/Model/; sub db_table() { 'feed' }; sub db_columns() { qw/id name is_public updated created/ }; sub feed_file(){ my $self = shift; use Model::FeedFile; $self->{feed_file} ||= Model::FeedFile->list_where( $self->{id}, 'feed_id' ); } 1;
feed_file model
package Model::FeedFile; use Model; our @ISA = qw/Model/; sub db_table() { 'feed_file' }; sub db_columns() { qw/id feed_id name size is_public for_date updated created/ }; #feed load by feed_id sub feed(){ my $self = shift; use Model::Feed; $self->{feed} ||= Model::Feed->load( $self->{feed_id} ); } 1;
REQUESTS EXAMPLES
Create
my $model = Model::Feed->new($args); $model->save();
Update
my $model = Model::Feed->load( $arg->{id}, 'id' ); $model->{name} = 'My new feed name'; $model->save();
Or
my $model = Model::Feed->load( $arg->{id} ); $model->{name} = 'My new feed name'; $model->save();
Read
my $model = Model::Feed->load( $channel_id, 'channel_id' ); print Dumper($model);
Read list.
print $_->{some_field} foreach ( @{ Model::Feed->list() } )
Read inner list.
foreach ( @{ Model::Feed->list() } ){ print Dumper($_) foreach ( @{ $_->feed_file() } ); }
Read list where.
print $_->{name}." ".$_->{size}." ".$_->{updated} foreach ( @{ Model::FeedFile->list_where( $arg->{feed_id}, 'feed_id' ) } )
Delete.
my $model = Model::FeedFileStat->load( $arg->{id} ); $model->delete();
BUGS
newid - return bad value for MySQL.
SUPPORT
Bugs may be submitted through email
AUTHORS
mobitrade.ua