DBIx::Custom::Where clause attribute can receive clause...
...without column name
... | ... |
@@ -1,5 +1,6 @@ |
1 | 1 |
0.1678 |
2 | 2 |
- DBIx::Custom::Model filter attribute can receive hash reference |
3 |
+ - DBIx::Custom::Where clause attribute can receive clause without column name. |
|
3 | 4 |
0.1677 |
4 | 5 |
- improved table search in column and join clause |
5 | 6 |
- DEPRECATED table tag. use table option. |
... | ... |
@@ -70,11 +70,20 @@ sub _parse { |
70 | 70 |
|
71 | 71 |
# String |
72 | 72 |
else { |
73 |
+ # Pushed |
|
74 |
+ my $pushed; |
|
73 | 75 |
|
74 | 76 |
# Column |
75 | 77 |
my $columns = $self->query_builder->build_query($clause)->columns; |
76 |
- croak qq{Each tag contains one column name: tag "$clause"} |
|
77 |
- unless @$columns == 1; |
|
78 |
+ if (@$columns == 0) { |
|
79 |
+ push @$where, $clause; |
|
80 |
+ $pushed = 1; |
|
81 |
+ return $pushed; |
|
82 |
+ } |
|
83 |
+ elsif (@$columns != 1) { |
|
84 |
+ croak qq{Each tag contains one column name: tag "$clause"} |
|
85 |
+ } |
|
86 |
+ |
|
78 | 87 |
my $column = $columns->[0]; |
79 | 88 |
if (my $q = $self->reserved_word_quote) { |
80 | 89 |
$column =~ s/$q//g; |
... | ... |
@@ -89,7 +98,6 @@ sub _parse { |
89 | 98 |
|
90 | 99 |
# Push |
91 | 100 |
my $param = $self->param; |
92 |
- my $pushed; |
|
93 | 101 |
if (ref $param eq 'HASH') { |
94 | 102 |
if (exists $param->{$column}) { |
95 | 103 |
if (ref $param->{$column} eq 'ARRAY') { |
... | ... |
@@ -1249,6 +1249,15 @@ $result = $dbi->select( |
1249 | 1249 |
$row = $result->fetch_hash_all; |
1250 | 1250 |
is_deeply($row, [{key1 => 1, key2 => 2}], 'not_exists'); |
1251 | 1251 |
|
1252 |
+$where = $dbi->where |
|
1253 |
+ ->clause(['and', 'key1 is not null', 'key2 is not null' ]); |
|
1254 |
+$result = $dbi->select( |
|
1255 |
+ table => 'table1', |
|
1256 |
+ where => $where, |
|
1257 |
+); |
|
1258 |
+$row = $result->fetch_hash_all; |
|
1259 |
+is_deeply($row, [{key1 => 1, key2 => 2}, {key1 => 3, key2 => 4}], 'not_exists'); |
|
1260 |
+ |
|
1252 | 1261 |
test 'dbi_option default'; |
1253 | 1262 |
$dbi = DBIx::Custom->new; |
1254 | 1263 |
is_deeply($dbi->dbi_option, {}); |