GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
Data::Model(3) User Contributed Perl Documentation Data::Model(3)

Data::Model - model interface which had more data sources unified, a.k.a data/object mapper

  package Your::Model;
  use base 'Data::Model';
  use Data::Model::Schema;
  use Data::Model::Driver::DBI;
  
  my $dbfile = '/foo/bar.db';
  my $driver = Data::Model::Driver::DBI->new(
      dsn => "dbi:SQLite:dbname=$dbfile",
  );
  base_driver( $driver );
  
  install_model user => schema {
      key 'id';
      columns qw/
          id
          name
      /;
  };
  
  # create database file
  unless (-f $dbfile) {
      my $dbh = DBI->connect($dsn, '', '', { RaiseError => 1, PrintError => 0 });
      for my $sql (__PACKAGE__->as_sqls) {
          $dbh->do( $sql );
      }
      $dbh->disconnect;
  }
  
  # in your script:
  use Your::Model;
  
  my $model = Your::Model->new;
  
  # insert
  my $row = $model->set(
      user => {
          id => 1,
      }
  );
  
  my $row = $model->lookup( user => 1 );
  $row->delete;

Data::Model is can use as ORM which can be defined briefly.

There are few documents. It is due to be increased in the near future.

One package can define two or more tables using DSL.

see Data::Model::Schema.

  my $model = Class->new;

  my $row = $model->lookup( user => $id );
  print $row->name;

  my @row = $model->lookup_multi( user => [ $id1, $id2 ] );
  print $row[0]->name;
  print $row[1]->name;

  my $iterator = $model->get( user => { 
      id => {
          IN => [ $id1, $id2 ],
      }
  });
  while (my $row = $iterator->next) {
      print $row->name;
  }
  # or
  while (my $row = <$iterator>) {
      print $row->name;
  }
  # or
  while (<$iterator>) {
      print $_->name;
  }

  $model->set( user => {
    id   => 3,
    name => 'insert record',
  });

if insert to table has auto increment then return $row object with fill in key column by last_insert_id.

  my $row = $model->set( user => {
    name => 'insert record',
  });
  say $row->id; # show last_insert_id()

  $model->delete( user => 3 ); # id = 3 is deleted

row object is provided by Data::Model::Row.

  my $row = $model->lookup( user => $id );
  $row->name('update record');
  $row->update;

  my $row = $model->lookup( user => $id );
  $row->delete;

see Data::Model::Transaction.

see Data::Model::Driver::DBI.

master-slave composition for mysql.

see Data::Model::Driver::DBI::MasterSlave.

Cash of the result of a query.

see Data::Model::Driver::Cache::HASH, see Data::Model::Driver::Cache::Memcached.

memcached is used for data storage.

see Data::Model::Driver::Memcached.

queuing manager for Q4M.

see Data::Model::Driver::Queue::Q4M.

on memory storage.

see Data::Model::Driver::Memory.

Data::Model::Row, Data::Model::Iterator

Benjamin Trott more idea given by Data::ObjectDriver

Kazuhiro Osawa <yappo <at> shibuya <doet> pl>

  git clone git://github.com/yappo/p5-Data-Model.git

Data::Model's Git repository is hosted at <http://github.com/yappo/p5-Data-Model>. patches and collaborators are welcome.

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

Hey! The above document had some coding errors, which are explained below:
Around line 754:
Non-ASCII character seen before =encoding in '<doet>'. Assuming UTF-8
2013-07-08 perl v5.32.1

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.