Koha::Objects - Koha Object set base class
use Koha::Objects; my $objects = Koha::Objects->search({ borrowernumber => $borrowernumber});
This class must be subclassed.
my $object = Koha::Objects->new();
my $object = Koha::Objects->_new_from_dbic( $resultset );
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.
It returns undef if no results were found
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
my $object = Koha::Objects->find_or_create( $attrs );
# scalar context my $objects = Koha::Objects->search([$params, $attributes]); while (my $object = $objects->next) { do_stuff($object); }
This instantiates the Koha::Objects class, and generates a resultset based on the query $params and $attributes that are passed (like in DBIC).
my $objects = Koha::Objects->search_related( $rel_name, $cond?, \%attrs? );
Searches the specified relationship, optionally specifying a condition and attributes for matching records.
my $objects = Koha::Objects->new; # or Koha::Objects->search $objects->update( $fields, [ { no_triggers => 0/1 } ] );
This method overloads the DBIC inherited one so if code-level triggers exist (through the use of an overloaded update or store method in the Koha::Object based class) those are called in a loop on the resultset.
If no_triggers is passed and true, then the DBIC update method is called directly. This feature is important for performance, in cases where no code-level triggers should be triggered. The developer will explicitly ask for this and QA should catch wrong uses as well.
my $filtered_objects = $objects->filter_by_last_update({ from => $from_datetime, to => $to_datetime, days|older_than => $days, min_days => $days, younger_than => $days, });
You should pass at least one of the parameters: from, to, days|older_than, min_days or younger_than. Make sure that they do not conflict with each other to get meaningful results. Note: from, to and min_days are inclusive! And by nature days|older_than and younger_than are exclusive.
The from and to parameters must be DateTime objects.
my $object = Koha::Objects->search({}, { rows => 1 })->single
Returns one and only one object that is part of this set. Returns undef if there are no objects found.
This is optimal as it will grab the first returned result without instantiating a cursor.
See: http://search.cpan.org/dist/DBIx-Class/lib/DBIx/Class/Manual/Cookbook.pod#Retrieve_one_and_only_one_row_from_a_resultset
my $object = Koha::Objects->next();
Returns the next object that is part of this set. Returns undef if there are no more objects to return.
my $object = Koha::Objects->last;
Returns the last object that is part of this set. Returns undef if there are no object to return.
my $empty_rs = Koha::Objects->new->empty;
Sets the resultset empty. This is handy for consistency on method returns (e.g. if we know in advance we won't have results but want to keep returning an iterator).
Koha::Objects->reset();
resets iteration so the next call to next() will start agein with the first object in a set.
Koha::Objects->as_list();
Returns an arrayref of the objects in this set.
Returns an unblessed representation of objects.
Return all the values of this set for a given column
Returns an unblessed representation of objects, suitable for JSON output.
Returns a representation of the objects, suitable for API output .
my $attributes = $objects->attributes_from_api( $api_attributes );
Translates attributes from the API to DBIC
my $mapped_attributes_hash = $objects->from_api_mapping;
Attributes map from the API to DBIC
my $whitelist = $object->prefetch_whitelist()
Returns a hash of prefetchable subs and the type it returns
wraps the DBIC object in a corresponding Koha object
Returns the internal resultset or creates it if undefined
my @columns = Koha::Objects->columns
Return the table columns
The autoload method is used call DBIx::Class method on a resultset.
Important: If you plan to use one of the DBIx::Class methods you must provide relevant tests in t/db_dependent/Koha/Objects.t Currently count, is_paged, pager, result_class, single and slice are covered.
The _type method must be set for all child classes. The value returned by it should be the DBIC resultset name. For example, for holds, _type should return 'Reserve'.
This method must be set for all child classes. The value returned by it should be the name of the Koha object class that is returned by this class. For example, for holds, object_class should return 'Koha::Hold'.
Kyle M Hall <kyle@bywatersolutions.com>