Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
Data::Model(3)	      User Contributed Perl Documentation	Data::Model(3)

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

SYNOPSIS
	 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;

DESCRIPTION
       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.

SCHEMA DEFINITION
       One package can define two or more tables using DSL.

       see Data::Model::Schema.

METHODS
   new([ \%options ]);
	 my $model = Class->new;

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

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

   get($target => $key [, \%options ])
	 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;
	 }

   set($target => $key,	=> \%values [, \%options ])
	 $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()

   delete($target => $key [, \%options ])
	 $model->delete( user => 3 ); #	id = 3 is deleted

ROW OBJECT METHODS
       row object is provided by Data::Model::Row.

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

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

TRANSACTION
       see Data::Model::Transaction.

DATA DRIVERS
   DBI
       see Data::Model::Driver::DBI.

   DBI::MasterSlave
       master-slave composition	for mysql.

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

   Cache
       Cash of the result of a query.

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

   Memcached
       memcached is used for data storage.

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

   Queue::Q4M
       queuing manager for Q4M.

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

   Memory
       on memory storage.

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

SEE ALSO
       Data::Model::Row, Data::Model::Iterator

ACKNOWLEDGEMENTS
       Benjamin	Trott more idea	given by Data::ObjectDriver

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

REPOSITORY
	 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.

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

POD ERRORS
       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

perl v5.32.1			  2013-07-08			Data::Model(3)

NAME | SYNOPSIS | DESCRIPTION | SCHEMA DEFINITION | METHODS | ROW OBJECT METHODS | TRANSACTION | DATA DRIVERS | SEE ALSO | ACKNOWLEDGEMENTS | AUTHOR | REPOSITORY | LICENSE | POD ERRORS

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=Data::Model&sektion=3&manpath=FreeBSD+13.0-RELEASE+and+Ports>

home | help