Bug 18361: Koha::Objects->find should accept composite primary keys
Changes the $id parameter to an array. (IssuingRule has three keys.)
The build_object method in TestBuilder.pm has been adjusted to pass
multiple primary key values to find.
Also adjusted the POD section to show more clearly that we accept
the same parameters as DBIx ResultSet does.
Test plan:
Run t/db_dependent/Koha/Object.t
Run t/db_dependent/Koha/Objects.t
Run t/db_dependent/TestBuilder.t
Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
(cherry picked from commit ec288a50de)
Signed-off-by: Fridolin Somers <fridolin.somers@biblibre.com>
This commit is contained in:
parent
6e26bd0567
commit
90ef2aedff
|
|
@ -70,19 +70,25 @@ sub _new_from_dbic {
|
|||
|
||||
=head3 Koha::Objects->find();
|
||||
|
||||
my $object = Koha::Objects->find($id);
|
||||
my $object = Koha::Objects->find( { keypart1 => $keypart1, keypart2 => $keypart2 } );
|
||||
Similar to DBIx::Class::ResultSet->find this method accepts:
|
||||
\%columns_values | @pk_values, { key => $unique_constraint, %attrs }?
|
||||
Strictly speaking, columns_values should only refer to columns under an
|
||||
unique constraint.
|
||||
|
||||
my $object = Koha::Objects->find( { col1 => $val1, col2 => $val2 } );
|
||||
my $object = Koha::Objects->find( $id );
|
||||
my $object = Koha::Objects->find( $idpart1, $idpart2, $attrs ); # composite PK
|
||||
|
||||
=cut
|
||||
|
||||
sub find {
|
||||
my ( $self, $id ) = @_;
|
||||
my ( $self, @pars ) = @_;
|
||||
|
||||
croak 'Cannot use "->find" in list context' if wantarray;
|
||||
|
||||
return unless defined($id);
|
||||
return unless @pars;
|
||||
|
||||
my $result = $self->_resultset()->find($id);
|
||||
my $result = $self->_resultset()->find( @pars );
|
||||
|
||||
return unless $result;
|
||||
|
||||
|
|
|
|||
|
|
@ -74,7 +74,7 @@ sub build_object {
|
|||
my @ids;
|
||||
|
||||
foreach my $pk ( @pks ) {
|
||||
push @ids, { $pk => $hashref->{ $pk } };
|
||||
push @ids, $hashref->{ $pk };
|
||||
}
|
||||
|
||||
my $object = $class->find( @ids );
|
||||
|
|
|
|||
Loading…
Reference in New Issue