Showing 3 changed files with 60 additions and 50 deletions
-14
lib/DBIx/Custom.pm
... ...
@@ -1075,20 +1075,6 @@ Query is L<DBIx::Custom::Query> object.
1075 1075
 Return value is L<DBIx::Custom::Result> if select statement is executed,
1076 1076
 or the count of affected rows if insert, update, delete statement is executed.
1077 1077
 
1078
-=head2 C<(experimental) expand>
1079
-
1080
-    my %expand = $dbi->expand($source);
1081
-
1082
-The following hash
1083
-
1084
-    {book => {title => 'Perl', author => 'Ken'}}
1085
-
1086
-is expanded to
1087
-
1088
-    ('book.title' => 'Perl', 'book.author' => 'Ken')
1089
-
1090
-This is used in C<select()>
1091
-
1092 1078
 =head2 C<delete>
1093 1079
 
1094 1080
     $dbi->delete(table  => $table,
+4 -4
lib/DBIx/Custom/Guide.pod
... ...
@@ -472,11 +472,11 @@ You can change Result class if you need.
472 472
         }
473 473
     );
474 474
 
475
-=head3 Resister helper method
475
+=head3 Resister method method
476 476
 
477
-You can resiter helper method.
477
+You can resiter method method.
478 478
 
479
-    $dbi->helper(
479
+    $dbi->method(
480 480
         update_or_insert => sub {
481 481
             my $self = shift;
482 482
             # do something
... ...
@@ -487,7 +487,7 @@ You can resiter helper method.
487 487
         }
488 488
     );
489 489
 
490
-Register helper methods.
490
+Register method methods.
491 491
 These method can be called from L<DBIx::Custom> object directory.
492 492
 
493 493
     $dbi->update_or_insert;
+56 -32
lib/DBIx/Custom/Guide/Ja.pod
... ...
@@ -585,6 +585,15 @@ C<delete_all()>、C<select()>で有効になります。
585 585
 このような自動的に実行されるフィルタを登録できることがL<DBIx::Custom>の
586 586
 特徴のひとつです。
587 587
 
588
+C<apply_filter()>で適用されたフィルタはテーブル名をを含む列名に対しても有効です。
589
+
590
+    $dbi->select(
591
+        table => 'book',
592
+        where => {'book.title' => 'Perl', 'book.author' => 'Ken'}
593
+    );
594
+
595
+テーブルを区別する必要があるときに便利な機能です。
596
+
588 597
 =head3 個別のフィルタの適用 C<filter>
589 598
 
590 599
 C<apply_filter()>を使って最初にすべてのテーブルの列について
... ...
@@ -1082,24 +1091,6 @@ C<table>を指定する必要のあることに注意してください。
1082 1091
 
1083 1092
 =head2 8. その他の機能
1084 1093
 
1085
-=head3 結果クラスの変更
1086
-
1087
-必要ならば結果クラスを変更することができます。
1088
-
1089
-    package MyResult;
1090
-    use base 'DBIx::Custom::Result';
1091
-    
1092
-    sub some_method { ... }
1093
-
1094
-    1;
1095
-    
1096
-    package main;
1097
-    
1098
-    use MyResult;
1099
-    
1100
-    my $dbi = DBIx::Custom->connect(...);
1101
-    $dbi->result_class('MyResult');
1102
-
1103 1094
 =head3 メソッドの登録
1104 1095
 
1105 1096
 メソッドを登録するにはC<method()>を使用します。
... ...
@@ -1121,27 +1112,60 @@ L<DBIx::Custom>オブジェクトから直接呼び出すことができます
1121 1112
     $dbi->update_or_insert;
1122 1113
     $dbi->find_or_create;
1123 1114
 
1124
-=head3 その他便利なメソッド
1115
+=head3 結果クラスの変更
1116
+
1117
+必要ならば結果クラスを変更することができます。
1118
+
1119
+    package MyResult;
1120
+    use base 'DBIx::Custom::Result';
1121
+    
1122
+    sub some_method { ... }
1125 1123
 
1126
-C<expand>メソッドを使用すると次のようなハッシュに含まれる
1127
-テーブル名と列名を結合することができます。
1124
+    1;
1125
+    
1126
+    package main;
1127
+    
1128
+    use MyResult;
1129
+    
1130
+    my $dbi = DBIx::Custom->connect(...);
1131
+    $dbi->result_class('MyResult');
1128 1132
 
1129
-    my %expanded = $dbi->expand(\%source);
1133
+=head3 キャッシング
1130 1134
 
1131
-以下のハッシュ
1135
+タグの展開後のSQLはパフォーマンスの理由のためにキャッシュされます。
1136
+これはC<chace>で設定でき、デフォルトではキャッシュを行う設定です。
1132 1137
 
1133
-    {book => {title => 'Perl', author => 'Ken'}}
1138
+    $dbi->cache(1);
1134 1139
 
1135
-は次のように展開されます。
1140
+キャッシュ方法はC<cache_method>にメソッドを指定することで
1141
+変更することができます。
1142
+データの保存と取得のためのメソッドを定義します。
1136 1143
 
1137
-    ('book.title' => 'Perl', 'book.author' => 'Ken')
1144
+デフォルトでは次のようにメモリ上にキャッシュを行うものになっています。
1138 1145
 
1139
-これはテーブル名を含むselect文で利用すると便利です。
1146
+    $dbi->cache_method(sub {
1147
+        sub {
1148
+            my $self = shift;
1149
+            
1150
+            $self->{_cached} ||= {};
1151
+            
1152
+            if (@_ > 1) {
1153
+                # Set
1154
+                $self->{_cached}{$_[0]} = $_[1] 
1155
+            }
1156
+            else {
1157
+                # Get
1158
+                return $self->{_cached}{$_[0]}
1159
+            }
1160
+        }
1161
+    });
1162
+    
1163
+第一はL<DBIx::Custom>オブジェクトです。
1164
+第二引数はタグの展開される前のSQLです。
1165
+第三引数はタグの展開後のSQLです。
1140 1166
 
1141
-    my $param = {title => 'Perl', author => '%Ken%'};
1142
-    $dbi->execute(
1143
-        'select * from book where {= book.title} && {like book.author};',
1144
-        param => {$dbi->expand({book => $param})}
1145
-    );
1167
+自分で作成する場合は第三引数が存在した場合はキャッシュを設定し、
1168
+存在しなかった場合はキャッシュを取得する実装に
1169
+してください。
1146 1170
 
1147 1171
 =cut