| ... | ... |
@@ -1,4 +1,5 @@ |
| 1 | 1 |
0.1648 |
| 2 |
+ add DBIx::Custom::Model foreign_key() attribute |
|
| 2 | 3 |
add models() attribute |
| 3 | 4 |
0.1647 |
| 4 | 5 |
add default_dbi_option() |
| ... | ... |
@@ -1035,6 +1035,13 @@ If you want to get all models, you can get them by keys of C<models()>. |
| 1035 | 1035 |
|
| 1036 | 1036 |
my @models = keys %{$self->models};
|
| 1037 | 1037 |
|
| 1038 |
+You can set primary key to model. |
|
| 1039 |
+ |
|
| 1040 |
+ $model->primary_key(['id', 'number_id']); |
|
| 1041 |
+ |
|
| 1042 |
+Primary key is used by C<update_at()>, C<delete_at()>, |
|
| 1043 |
+C<select_at()>. |
|
| 1044 |
+ |
|
| 1038 | 1045 |
=head2 Model Examples |
| 1039 | 1046 |
|
| 1040 | 1047 |
Model examples |
| ... | ... |
@@ -1063,6 +1063,13 @@ L<DBIx::Custom>とL<DBI>のすべてのメソッドを呼び出すこともで |
| 1063 | 1063 |
|
| 1064 | 1064 |
my @models = keys %{$self->models};
|
| 1065 | 1065 |
|
| 1066 |
+モデルにはプライマリーキーを設定することもできます。 |
|
| 1067 |
+ |
|
| 1068 |
+ $model->primary_key(['id', 'number_id']); |
|
| 1069 |
+ |
|
| 1070 |
+ここで設定したプライマリーキーはC<update_at()>, C<delete_at()>, |
|
| 1071 |
+C<select_at()>で利用されます。 |
|
| 1072 |
+ |
|
| 1066 | 1073 |
=head2 モデルのサンプル |
| 1067 | 1074 |
|
| 1068 | 1075 |
モデルのサンプルです。 |
| ... | ... |
@@ -10,7 +10,10 @@ use Carp 'croak'; |
| 10 | 10 |
# Carp trust relationship |
| 11 | 11 |
push @DBIx::Custom::CARP_NOT, __PACKAGE__; |
| 12 | 12 |
|
| 13 |
-__PACKAGE__->attr(['dbi', 'table']); |
|
| 13 |
+__PACKAGE__->attr( |
|
| 14 |
+ ['dbi', 'table'], |
|
| 15 |
+ primary_key => sub { [] }
|
|
| 16 |
+); |
|
| 14 | 17 |
|
| 15 | 18 |
our $AUTOLOAD; |
| 16 | 19 |
|
| ... | ... |
@@ -69,7 +72,7 @@ sub DESTROY { }
|
| 69 | 72 |
|
| 70 | 73 |
=head1 NAME |
| 71 | 74 |
|
| 72 |
-DBIx::Custom::Table - Table base class(experimental) |
|
| 75 |
+DBIx::Custom::Model - Model (experimental) |
|
| 73 | 76 |
|
| 74 | 77 |
=head1 SYNOPSIS |
| 75 | 78 |
|
| ... | ... |
@@ -77,6 +80,30 @@ use DBIx::Custom::Table; |
| 77 | 80 |
|
| 78 | 81 |
my $table = DBIx::Custom::Model->new(table => 'books'); |
| 79 | 82 |
|
| 83 |
+=head1 ATTRIBUTES |
|
| 84 |
+ |
|
| 85 |
+=head2 C<dbi> |
|
| 86 |
+ |
|
| 87 |
+ my $dbi = $model->dbi; |
|
| 88 |
+ $model = $model->dbi($dbi); |
|
| 89 |
+ |
|
| 90 |
+L<DBIx::Custom> object. |
|
| 91 |
+ |
|
| 92 |
+=head2 C<table> |
|
| 93 |
+ |
|
| 94 |
+ my $table = $model->table; |
|
| 95 |
+ $model = $model->table('book');
|
|
| 96 |
+ |
|
| 97 |
+Table name. |
|
| 98 |
+ |
|
| 99 |
+=head2 C<primary_key> |
|
| 100 |
+ |
|
| 101 |
+ my $primary_key = $model->primary_key; |
|
| 102 |
+ $model = $model->primary_key(['id', 'number']); |
|
| 103 |
+ |
|
| 104 |
+Foreign key. This is used by C<update_at()>, C<delete_at()>, |
|
| 105 |
+C<select_at()>. |
|
| 106 |
+ |
|
| 80 | 107 |
=head1 METHODS |
| 81 | 108 |
|
| 82 | 109 |
L<DBIx::Custom> inherits all methods from L<Object::Simple>, |
| ... | ... |
@@ -1371,4 +1371,11 @@ is_deeply($model->list->fetch_hash_all, [{name => 'a'}], 'include all model');
|
| 1371 | 1371 |
$model = $dbi->model('book');
|
| 1372 | 1372 |
is_deeply($model->list->fetch_hash_all, [{name => 'a'}], 'include all model');
|
| 1373 | 1373 |
|
| 1374 |
+test 'primary_key'; |
|
| 1375 |
+use MyDBI1; |
|
| 1376 |
+$dbi = MyDBI1->connect($NEW_ARGS->{0});
|
|
| 1377 |
+$model = $dbi->model('book');
|
|
| 1378 |
+$model->primary_key(['id', 'number']); |
|
| 1379 |
+is_deeply($model->primary_key, ['id', 'number']); |
|
| 1380 |
+ |
|
| 1374 | 1381 |
|