Data-Model
view release on metacpan or search on metacpan
lib/Data/Model/Tutorial/JA.pm view on Meta::CPAN
=encoding utf8
=head1 NAME
Data::Model::Tutorial::JA - Data::Model::Tutorialæ¥æ¬èªç
=head1 Data::Model ã¨ã¯
id:yappo ãããã¤ãã£ã¦ãã O/R Mapperãæ°èã®ãã®ã§ãã¥ã¼ããªã¢ã«çãªãã®ããªã
ã®ã§èªåã§ããã¦ã¿ããã¨ã«ãã¾ããã
ã¨ã¯ãããData::Model èªä½ãã¾ã ã¾ã αã¯ãªãªãã£ã§ãã®ã§ããã¥ã¼ããªã¢ã«ãã¦ã¬ã
ã§ãã
ç¾å¨ã® Data::Model ã®ããã¥ã¡ã³ã㯠Data::Model Track - JPerl Advent Calendar 2009 ã«è¯è³ªãªããã¥ã¡ã³ããããã¾ãã®ã§ããã¡ããåèã«ãã¦ãã ããã
L<http://perl-users.jp/articles/advent-calendar/2009/data-model/>
è¿ãå°æ¥ããããã®ããã¥ã¡ã³ãã POD ã«çµ±åããã¾ãã
=head1 ã¤ãã£ã¦ã¿ã
=head2 DBI ã対象ã«ã¤ãã£ã¦ã¿ã
Data::Model ã¯ãData::Model ã®ã¹ãã¼ãå®ç¾©ããCREATE TABLE æãçºè¡ãããã¨ãã§ã
ã¾ãããªã®ã§ãã¾ãã¯ã¹ãã¼ãå®ç¾©ã Perl ã§æ¸ãã¾ãã
# lib/Neko/DB/User.pm
package Neko::DB::User;
use strict;
use warnings;
use base 'Data::Model';
use Data::Model::Schema sugar => 'myapp';
use Neko::Columns;
install_model user => schema {
# primary key
key 'id';
# ã«ã©ã å®ç¾©
column 'user.id' => { auto_increment => 1 };
utf8_column 'user.name';
};
1;
ã«ã©ã ã®è©³ç´°ãªå®ç¾©ã¯ãå¥ãã¡ã¤ã«ã«ãã¾ãã
# lib/Neko/Columns.pm
package Neko::Columns;
use strict;
use warnings;
use Data::Model::Schema sugar => 'myapp';
column_sugar 'user.id'
=> int => {
required => 1,
unsigned => 1,
};
column_sugar 'user.name'
=> 'varchar' => {
required => 1,
size => 255,
};
1;
ã«ã©ã ã®å®ç¾©ãå¥ãã¡ã¤ã«ã«ããã¨ããã¨ããã¯ãä»ã® O/R Mapper ã¨ã®ããããªéãã§
ãããããã«ãã£ã¦å¾ãããã¡ãªããã¯ãã«ã©ã å®ç¾©ã®å
±éåãã§ããããã¨ãã°ãã¬ã³ã¼
ãã®ä½ææ¥ä»ãä¿åãã created_on ãªãã¦ããã®ã¯è¤æ°ã®ãã¼ãã«ã§åãå®ç¾©ãã¤ãã
ãããã®ã§ããããå
±éåã§ããã¨ä¾¿å©ã§ãã
=head2 ã¹ãã¼ãå®ç¾©ãå®éã«ã¤ãã
ããããã³ã ããCREATE TABLE æãçºè¡ããã«ã¯ã
# script/dump_schema.pl
use strict;
use warnings;
use Neko::DB::User;
( run in 0.842 second using v1.01-cache-2.11-cpan-39bf76dae61 )