Bug 15774: Use Koha::Object(s) for additional fields
[koha.git] / Koha / Object / Mixin / AdditionalFields.pm
blob090e2824c22220f9a599f87037c85b13c04b7864
1 package Koha::Object::Mixin::AdditionalFields;
3 use Modern::Perl;
5 =head1 NAME
7 Koha::Object::Mixin::AdditionalFields
9 =head1 SYNOPSIS
11 package Koha::Foo;
13 use parent qw( Koha::Object Koha::Object::Mixin::AdditionalFields );
15 sub _type { 'Foo' }
18 package main;
20 use Koha::Foo;
22 Koha::Foos->find($id)->set_additional_fields(...);
24 =head1 API
26 =head2 Public methods
28 =head3 set_additional_fields
30 $foo->set_additional_fields([
32 id => 1,
33 value => 'foo',
36 id => 2,
37 value => 'bar',
39 ]);
41 =cut
43 sub set_additional_fields {
44 my ($self, $additional_fields) = @_;
46 my $rs = Koha::Database->new->schema->resultset('AdditionalFieldValue');
48 foreach my $additional_field (@$additional_fields) {
49 my $field_value = $rs->find_or_new({
50 field_id => $additional_field->{id},
51 record_id => $self->id,
52 });
53 my $value = $additional_field->{value};
54 if (defined $value) {
55 $field_value->set_columns({ value => $value })->update_or_insert;
56 } elsif ($field_value->in_storage) {
57 $field_value->delete;
62 sub additional_field_values {
63 my ($self) = @_;
65 return $self->_result->additional_field_values;