Showing 4 changed files with 126 additions and 60 deletions
+1
Changes
... ...
@@ -1,4 +1,5 @@
1 1
 0.1659
2
+    - removed EXPERIMENTAL selection
2 3
     - added select() all_column option
3 4
 0.1658
4 5
     - added EXPERIMENTAL DBIx::Custom::Model column() prefix option.
+125 -33
lib/DBIx/Custom.pm
... ...
@@ -1797,13 +1797,6 @@ C<default_filter> and C<filter> of C<DBIx::Custom::Result>
1797 1797
 
1798 1798
 Register tag.
1799 1799
 
1800
-=head2 C<rollback>
1801
-
1802
-    $dbi->rollback;
1803
-
1804
-Rollback transaction.
1805
-This is same as L<DBI>'s C<rollback>.
1806
-
1807 1800
 =head2 C<select>
1808 1801
 
1809 1802
     my $result = $dbi->select(
... ...
@@ -1812,7 +1805,7 @@ This is same as L<DBI>'s C<rollback>.
1812 1805
         where  => {author => 'Ken'},
1813 1806
     );
1814 1807
     
1815
-Execute select statement.
1808
+Select statement.
1816 1809
 
1817 1810
 The following opitons are currently available.
1818 1811
 
... ...
@@ -1822,7 +1815,7 @@ The following opitons are currently available.
1822 1815
 
1823 1816
 Table name.
1824 1817
 
1825
-    $dbi->select(table => 'book', ...);
1818
+    $dbi->select(table => 'book');
1826 1819
 
1827 1820
 =item C<column>
1828 1821
 
... ...
@@ -1841,9 +1834,9 @@ Default is '*' unless C<column> is specified.
1841 1834
 
1842 1835
 =item C<all_column EXPERIMENTAL>
1843 1836
 
1844
-Colum clause, contains all columns. This is true or false value
1837
+Colum clause, contains all columns of joined table. This is true or false value
1845 1838
 
1846
-    $dbi->select(all_column => 1, ...);
1839
+    $dbi->select(all_column => 1);
1847 1840
 
1848 1841
 If main table is C<book> and joined table is C<company>,
1849 1842
 This create the following column clause.
... ...
@@ -1856,48 +1849,147 @@ This create the following column clause.
1856 1849
 Columns of main table is consist of only column name,
1857 1850
 Columns of joined table is consist of table and column name joined C<__>.
1858 1851
 
1852
+Note that this option is failed unless L<DBIx::Custom::Model> object is set to
1853
+C<model> and C<columns> of the object is set.
1854
+
1855
+    # Generally do the following way before using all_column option
1856
+    $dbi->include_model('MyModel')->setup_model;
1857
+
1859 1858
 =item C<where>
1860 1859
 
1861 1860
 Where clause. This is hash reference or L<DBIx::Custom::Where> object.
1862 1861
     
1863 1862
     # Hash reference
1864
-    $dbi->select(where => {author => 'Ken', 'title' => 'Perl'}, ...);
1863
+    $dbi->select(where => {author => 'Ken', 'title' => 'Perl'});
1865 1864
     
1866
-    # Where clause
1865
+    # DBIx::Custom::Where object
1867 1866
     my $where = $dbi->where(
1868 1867
         clause => ['and', '{= author}', '{like title}'],
1869 1868
         param  => {author => 'Ken', title => '%Perl%'}
1870 1869
     );
1871
-    $dbi->select(where => $where, ...);
1870
+    $dbi->select(where => $where);
1872 1871
 
1873
-=back
1872
+=item C<join EXPERIMENTAL>
1874 1873
 
1875
-C<filter> arguments.
1876
-C<where> is where clause. this is normally hash reference.
1877
-C<append> is a string added at the end of the SQL statement.
1878
-C<filter> is filters when parameter binding is executed.
1879
-C<query> is if you don't execute sql and get L<DBIx::Custom::Query> object as return value.
1880
-default to 0. This is EXPERIMENTAL.
1881
-C<selection> is string of column name and tables. This is EXPERIMENTAL
1874
+Join clause used in need. This is array reference.
1875
+
1876
+    $dbi->select(join =>
1877
+        [
1878
+            'left outer join company on book.company_id = company_id',
1879
+            'left outer join location on company.location_id = location.id'
1880
+        ]
1881
+    );
1882
+
1883
+If column cluase or where clause contain table name like "company.name",
1884
+needed join clause is used automatically.
1885
+
1886
+    $dbi->select(
1887
+        table => 'book',
1888
+        column => ['company.location_id as company__location_id'],
1889
+        where => {'company.name' => 'Orange'},
1890
+        join => [
1891
+            'left outer join company on book.company_id = company.id',
1892
+            'left outer join location on company.location_id = location.id'
1893
+        ]
1894
+    );
1895
+
1896
+In above select, the following SQL is created.
1897
+
1898
+    select company.location_id as company__location_id
1899
+    from book
1900
+      left outer join company on book.company_id = company.id
1901
+    where company.name = Orange
1902
+
1903
+=item C<append>
1904
+
1905
+Appended statement to last of SQL. This is string.
1906
+
1907
+    $dbi->select(append => 'order by title');
1908
+
1909
+=item C<filter>
1910
+
1911
+Filter, executed before data is send to database. This is array reference
1912
+and filter value is code reference or
1913
+filter name registerd by C<register_filter()>.
1914
+
1915
+    # Basic
1916
+    $dbi->select(
1917
+        filter => [
1918
+            title  => sub { uc $_[0] }
1919
+            author => sub { uc $_[0] }
1920
+        ]
1921
+    );
1922
+    
1923
+    # At once
1924
+    $dbi->select(
1925
+        filter => [
1926
+            [qw/title author/]  => sub { uc $_[0] }
1927
+        ]
1928
+    );
1929
+    
1930
+    # Filter name
1931
+    $dbi->select(
1932
+        filter => [
1933
+            title  => 'upper_case',
1934
+            author => 'upper_case'
1935
+        ]
1936
+    );
1882 1937
 
1883
-    selection => 'name, location.name as location_name ' .
1884
-                 'from company inner join location'
1938
+These filters are added to the C<out> filters set by C<apply_filter()>.
1885 1939
 
1886
-First element is a string. it contains tags,
1887
-such as "{= title} or {like author}".
1888
-Second element is paramters.
1940
+=item C<query EXPERIMENTAL>
1889 1941
 
1890
-C<join> is join clause after from clause.
1891
-This is EXPERIMENTAL.
1942
+Get L<DBIx::Custom::Query> object instead of executing SQL.
1943
+This is true or false value.
1944
+
1945
+    my $query = $dbi->select(query => 1, ...);
1946
+
1947
+You can check executing SQL by this object.
1948
+
1949
+    my $sql = $query->sql;
1950
+
1951
+=back
1892 1952
 
1893 1953
 =head3 C<select_at() EXPERIMENTAL>
1894 1954
 
1895
-To select row by using primary key, use C<select_at()>.
1955
+Select statement, using primary key.
1956
+
1957
+    $dbi->select_at(
1958
+        table => 'book',
1959
+        primary_key => 'id',
1960
+        where => '5'
1961
+    );
1962
+
1963
+This method is same as select method exept that
1964
+primary_key is specified and C<where> is array reference.
1965
+all option of C<select()> is available.
1896 1966
 
1897
-    $dbi->select_at(table => 'book', primary_key => ['id'], where => ['123']);
1967
+=head2 C<primary_key>
1898 1968
 
1899
-In this example, row which id colunm is 123 is selected.
1900
-NOTE that you must pass array reference as C<where>.
1969
+Primary key. This is constant value or array reference.
1970
+    
1971
+    # Constant value
1972
+    $dbi->select(primary_key => 'id');
1973
+
1974
+    # Array reference
1975
+    $dbi->select(primary_key => ['id1', 'id2' ]);
1976
+
1977
+=head2 C<where>
1978
+
1979
+Where clause, created by primary key infromation.
1980
+This is constant value or array reference.
1981
+
1982
+    # Constant value
1983
+    $dbi->select(where => 5);
1984
+
1985
+    # Array reference
1986
+    $dbi->select(where => [3, 5]);
1987
+
1988
+In first examle, the following SQL is created.
1989
+
1990
+    select * from book where id = ?
1991
+
1992
+Place holder is set to 5.
1901 1993
 
1902 1994
 =head2 C<update>
1903 1995
 
-14
lib/DBIx/Custom/Guide.pod
... ...
@@ -363,20 +363,6 @@ Following SQL is executed.
363 363
 C<appned> is also used at C<insert()>, C<update()>, C<update_all()>
364 364
 C<delete()>, C<delete_all()>, and C<select()>.
365 365
 
366
-Instead of C<column> and C<table>,
367
-you can use C<selection>.
368
-This is used to specify column names and table names at once
369
-
370
-    my $selection = <<"EOS";
371
-    title, author, company_name
372
-    from book inner join company on book.company_id = company.id
373
-    EOS
374
-
375
-    $dbi->select(selection => $selection);
376
-
377
-Note that you can't use where clause in C<selection>.
378
-use clause like "inner join".
379
-
380 366
 =head3 C<execute()>
381 367
 
382 368
 use C<execute()> to execute SQL
-13
lib/DBIx/Custom/Guide/Ja.pod
... ...
@@ -369,19 +369,6 @@ C<append>はSQLの末尾に追加される文字列です。
369 369
 またC<append>は、C<select>だけでなくC<insert()>、C<update()>、C<update_all()>
370 370
 C<delete()>、C<delete_all()>、C<select()>で使用することもできます。
371 371
 
372
-C<column>とC<table>を使用する代わりに、C<selection>を使用することも
373
-できます。列名とテーブル名をまとめて指定する場合に利用します。
374
-    
375
-    my $selection = <<"EOS";
376
-    title, author, company_name
377
-    from book inner join company on book.company_id = company.id
378
-    EOS
379
-
380
-    $dbi->select(selection => $selection);
381
-
382
-C<selection>においてはwhere句を利用できないということに注意してください。
383
-"inner join"などの句を利用してください。
384
-
385 372
 =head3 SQLの実行 C<execute()>
386 373
 
387 374
 SQLを実行するにはC<execute()>を使用します。