X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FDBUtils.pm;h=89761443bb378a3380a8722986b6ea0752da1995;hb=b47574cb2bdd79d3c172f67d94d3eada4bd3f981;hp=2d9c472afb1ed78be574ff0bdbfe6f58bcfb2864;hpb=c497b0352f95a55d204101b70ac771b2dc21ddee;p=kivitendo-erp.git diff --git a/SL/DBUtils.pm b/SL/DBUtils.pm index 2d9c472af..89761443b 100644 --- a/SL/DBUtils.pm +++ b/SL/DBUtils.pm @@ -8,6 +8,7 @@ our @EXPORT = qw(conv_i conv_date conv_dateq do_query selectrow_query do_stateme selectfirst_hashref_query selectfirst_array_query selectall_hashref_query selectall_array_query selectall_as_map + selectall_ids prepare_execute_query prepare_query create_sort_spec does_table_exist add_token); @@ -221,11 +222,11 @@ sub selectall_as_map { my %hash; if ('' eq ref $value_col) { while (my $ref = $sth->fetchrow_hashref()) { - $hash{$ref->{$key_col}} = $ref->{$value_col}; + $hash{$ref->{$key_col} // ''} = $ref->{$value_col}; } } else { while (my $ref = $sth->fetchrow_hashref()) { - $hash{$ref->{$key_col}} = { map { $_ => $ref->{$_} } @{ $value_col } }; + $hash{$ref->{$key_col} // ''} = { map { $_ => $ref->{$_} } @{ $value_col } }; } } @@ -236,6 +237,25 @@ sub selectall_as_map { return %hash; } +sub selectall_ids { + $main::lxdebug->enter_sub(2); + + my ($form, $dbh, $query, $key_col) = splice(@_, 0, 4); + + my $sth = prepare_execute_query($form, $dbh, $query, @_); + + my @ids; + while (my $ref = $sth->fetchrow_arrayref()) { + push @ids, $ref->[$key_col]; + } + + $sth->finish; + + $main::lxdebug->leave_sub(2); + + return @ids; +} + sub create_sort_spec { $main::lxdebug->enter_sub(2); @@ -369,7 +389,7 @@ __END__ =head1 NAME -SL::DBUTils.pm: All about Databaseconections in Lx +SL::DBUTils.pm: All about database connections in kivitendo =head1 SYNOPSIS @@ -402,7 +422,7 @@ Using DBUtils most database procedures can be reduced to defining the query, exe DBUtils relies heavily on two parameters which have to be passed to almost every function: $form and $dbh. - $form is used for error handling only. It can be omitted in theory, but should not. - - $dbh is a handle to the databe, as returned by the DBI::connect routine. If you don't have an active connectiong, you can query $form->get_standard_dbh() to get a generic no_auto connection. Don't forget to commit in this case! + - $dbh is a handle to the database, as returned by the DBI::connect routine. If you don't have an active connection, you can query $form->get_standard_dbh() to get a generic no_auto connection. Don't forget to commit in this case! Every function here should accomplish the follwing things: